我試圖透過覆蓋此文件上的值來更改亮度:
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