无法写入文件/ sys / class / backlight / acpi_video0 / brightness(ubuntu)


16

我试图通过覆盖此文件上的值来更改亮度:

sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied

即使使用sudo也不起作用。但是,如果我使用su切换为超级用户,则可以使用。这是为什么?


此操作仅限于sudo用户。我在此评论中找到了答案:The reason that this is set at su permissions is that a virus could conceivably make your screen dim and go bright at incredible speed ultimately damaging your hardware display. In the 90's I encountered a virus that would adjust the screen refresh Hertz so rapidly that your monitor would fry.
Alexey Volodko,

Answers:


17

发生错误是因为sudo提升了命令(sudo echo 5)的权限,但没有提升写入文件(> /sys/class/backlight/acpi_video0/brightness)的重定向。实际的bash shell需要写权限,这就是为什么它在sudo下失败但以root身份工作的原因。

您可以通过以tee超级用户身份运行命令以写入文件来解决此问题:

echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness

请注意,这也会在终端上回显“ 5”。这是该tee命令的正常副作用。


聪明的tee解决方案
归功于@duskwuff

5
我不能为此提出意见-我是从who-knows-where那里学到的UNIX民间传说。
duskwuff -inactive- 2012年

1
与/ sys / class / drm / card0 / device / pp_sclk_od不适用于我无法更改该值
alexela

5

如Arch Wiki(link)中所写,默认情况下只能root通过此方法更改亮度。为了让用户的video组来改变亮度,udev如可以使用下列规则(更换<vendor>你的供应商ID例如。acpi_video0intel_backlight):

% cat /etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

然后,您需要将您的用户添加到video组中。

usermod -aG video <user>

之后,这应该工作:

echo 5 > /sys/class/backlight/<vendor>/brightness

1
此方法适用于我,更换后acpi_video0通过intel_backlight
Mehdi

1
感谢您的反馈。我已经更新了答案。
Manuel Schmitzberger

2

如果您不希望出现5,这也可以:

sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'

0

我在VAIO VPCEG上一直在努力解决此问题。在完成每个论坛中提到的所有内容后,我发现了一些有趣的东西:

更改了引导参数acpi_osi=Linux acpi_backlight=vendor并尝试手动更改后/sys/class/backlight/[vendor - in my case intel_backlight]/brightness,我意识到将对该文件的权限从root更改为我的用户并重新启动acpid服务,这将使我能够完美地使用亮度键。


-1

以下解决方案对我来说很好。

我将其发布为答案,以便其他人可以获得帮助:

更改权限:

sudo chmod a+rw /sys/class/backlight/intel_backlight/brightness

现在更改亮度:

echo 400 > /sys/class/backlight/intel_backlight/brightness

在您的情况下,它将是: /sys/class/backlight/acpi_video0/brightness


1
欢迎来到超级用户!请不要添加“谢谢”作为答案。在网站上花费一些时间,您将获得足够的特权来投票赞成您喜欢的答案,这是超级用户表示感谢的方式。
DavidPostill

另外,您并没有真正回答这个问题,那就是“为什么”?
DavidPostill

非常感谢..提供的信息,真的很抱歉..仅仅因为我..您浪费了您宝贵的时间来指导我..我将确保不会再发生这种情况
noobdeveloper99 2015年

不允许所有人像这样读写系统配置文件不是一个好习惯。
lindhe

我有一些场景,其中屏幕开始运行,但背光值仍为0,
ransh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.