Невозможно записать в файл /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 нужны разрешения на запись, поэтому она не работает с 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

Связанный контент