Не могу записать в файл / sys / class / backlight / acpi_video0 / Brightness (Ubuntu)

16

Я пытаюсь изменить яркость, перезаписав значение в этом файле:

sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied

Это не работает даже при использовании sudo. Однако, если я переключаюсь на суперпользователя с su, это работает. Это почему?


источник
Это действие доступно только пользователям sudo. Я нашел ответ в этом комментарии :The reason that this is set at su permissions is that a virus could conceivably make your screen dim and go bright at incredible speed ultimately damaging your hardware display. In the 90's I encountered a virus that would adjust the screen refresh Hertz so rapidly that your monitor would fry.
Алексей Володько

Ответы:

17

Ошибка происходит потому, что 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команды.

mguymon
источник
Кредит идет к @duskwuff для умного teeрешения
mguymon
5
Я не могу взять на себя ответственность за то, что придумал это - это немного UNIX фольклора, который я взял от "кто знает, где".
сумерки -неактивно-
1
у меня не работает с / sys / class / drm / card0 / device / pp_sclk_od не может изменить значение
alexela
5

Как написано в 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
Мануэль Шмитцбергер
источник
1
Этот метод работает для меня, после замены acpi_video0на intel_backlight.
Мехди
1
Спасибо за ваш отзыв. Я обновил ответ.
Мануэль Шмитцбергер
2

Если вы не хотите, чтобы 5 отображалось, это также работает:

sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'
Рафаэль
источник
0

Я уже давно борюсь с этой проблемой на своем VAIO VPCEG. Сделав все упомянутое на каждом форуме, я нашел что-то интересное:

После изменения параметра загрузки acpi_osi=Linux acpi_backlight=vendorи попытки изменения вручную /sys/class/backlight/[vendor - in my case intel_backlight]/brightnessя понял, что изменение разрешения для этого файла с правами root на моего пользователя и перезапуск службы acpid позволит мне безошибочно использовать клавиши яркости.

user273880
источник
-1

нижеприведенные решения прекрасно работают для меня ..

я публикую это как ответ, чтобы другие могли получить помощь:

изменить разрешение:

sudo chmod a+rw /sys/class/backlight/intel_backlight/brightness

Теперь измените яркость:

echo 400 > /sys/class/backlight/intel_backlight/brightness

в вашем случае это будет: /sys/class/backlight/acpi_video0/brightness

noobdeveloper99
источник
1
Добро пожаловать в Супер пользователя! Пожалуйста, не добавляйте «спасибо» как ответы. Потратьте некоторое время на сайт, и вы получите достаточные привилегии, чтобы выслушать ответы, которые вам нравятся, что является суперпользователем, чтобы сказать спасибо.
DavidPostill
Кроме того, вы на самом деле не ответили на вопрос: «Почему это так?»
DavidPostill
большое спасибо .. за информацию и очень извиняюсь .. только из-за меня .. ты потратил впустую свое важное время на руководство мной… я позабочусь, чтобы это больше не повторилось
noobdeveloper99
Не стоит разрешать всем читать и писать такой системный конфигурационный файл.
Линде
У меня есть несколько сценариев, когда экран начинает функционировать, но значение подсветки по-прежнему равно 0,
ransh