我正在尝试通过覆盖此文件的值来改变亮度:
sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied
即使使用 sudo 也不起作用。但是,如果我使用 su 切换到超级用户,它就可以正常工作。这是为什么?
答案1
发生此错误的原因是 sudo 提升了命令 ( sudo echo 5
) 的权限,但未提升写入文件 ( > /sys/class/backlight/acpi_video0/brightness
) 的重定向权限。实际的 bash shell 需要写入权限,这就是为什么 sudo 会失败但可以作为 root 运行的原因。
tee
您可以通过以 root 身份运行命令来写入文件来解决此问题:
echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness
请注意,这还会将“5”回显到您的终端。这是该命令的正常副作用tee
。
答案2
正如 Arch Wiki 所写(关联),默认情况下,只能root
通过此方法更改亮度。若要允许群组中的用户video
更改亮度,udev
可以使用如下规则(将 替换<vendor>
为您的供应商 ID。例如acpi_video0
)intel_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
答案3
如果你不想回显 5,也可以这样做:
sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'
答案4
下面的解决方案对我来说很好用。
我将其作为答案发布,以便其他人可以获得帮助:
更改权限:
sudo chmod a+rw /sys/class/backlight/intel_backlight/brightness
现在改变亮度:
echo 400 > /sys/class/backlight/intel_backlight/brightness
在你的情况下将是:/sys/class/backlight/acpi_video0/brightness