22 linux sudo brightness su
我试图通过覆盖此文件上的值来更改亮度:
sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied
Run Code Online (Sandbox Code Playgroud)
即使使用 sudo 也不起作用。但是,如果我使用 su 切换到超级用户,它就可以工作。这是为什么?
小智 21
发生此错误是因为 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
Run Code Online (Sandbox Code Playgroud)
请注意,这也会向您的终端回显“5”。这是该tee命令的正常副作用。
Man*_*ger 16
正如 Arch wiki ( link ) 中所写,默认情况下,只能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"
Run Code Online (Sandbox Code Playgroud)
然后您需要将您的用户添加到video组中。
usermod -aG video <user>
Run Code Online (Sandbox Code Playgroud)
之后这应该工作:
echo 5 > /sys/class/backlight/<vendor>/brightness
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23193 次 |
| 最近记录: |