無法寫入檔案 /sys/class/backlight/acpi_video0/brightness (ubuntu)

無法寫入檔案 /sys/class/backlight/acpi_video0/brightness (ubuntu)

我試圖透過覆蓋此文件上的值來更改亮度:

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

相關內容