Я пытаюсь изменить яркость, перезаписав значение в этом файле:
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 нужны разрешения на запись, поэтому она не работает с sudo, но работает как root.
Эту проблему можно обойти, выполнив tee
команду от имени пользователя root для записи в файл:
echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness
Обратите внимание, что это также выведет "5" на ваш терминал. Это обычный побочный эффект команды tee
.
решение2
Как написано в Arch wiki (связь), по умолчанию, только root
может изменять яркость этим методом. Чтобы разрешить пользователям в video
группе изменять яркость, udev
можно использовать правило, подобное следующему (замените <vendor>
на идентификатор вашего поставщика. Например 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