Как изменить права доступа к конкретным файлам с помощью правила udev?

Я пытаюсь разрешить моему пользователю изменять яркость экрана, что означает: разрешить bob читать, писать разрешения для / sys / класс / подсветка / intel_backlight / яркость

с использованием:

udevadm info -a -p /sys/class/backlight/intel_backlight/

показывает следующий результат:

  looking at device '/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight':
KERNEL=="intel_backlight"
SUBSYSTEM=="backlight"
DRIVER==""
ATTR{actual_brightness}=="7500"
ATTR{bl_power}=="0"
ATTR{brightness}=="7500"
ATTR{max_brightness}=="7500"
ATTR{type}=="raw"

.
.
.

Поэтому я написал для этого правило udev в /etc/udev/rules.d/30-brightness.rules

30-яркость.

KERNEL=="intel_backlight", SUBSYSTEM=="backlight", RUN+="/usr/bin/find /sys/class/backlight/intel_backlight/ -type f -name brightness -exec chown bob:bob {} \; -exec chmod 666 {} \;"

Но если после перезагрузки права доступа к файлу остаются -rw-r--r-- 1 root root

Итак, мой вопрос: как изменить права доступа к конкретным файлам с помощью правила udev и что я делаю не так?

Следует учитывать несколько моментов: существует ли более позднее правило, которое отменяет это? Вы используете полный путь для find, но не для chown или chmod, они на пути? Это на самом деле файлы (-type f), большинство вещей в /sys/class - это символические ссылки или каталоги в моей системе.

Cupcake Protocol 13.09.2018 21:08

Я попытался изменить имя файла на 90-яркость.rules, чтобы он запускался последним. единственное другое правило, которое существует в /etc/udev/rules.d, - это 70-snap.core.rules, поэтому оно не должно отменять мое правило. Если я запускаю /usr/bin/find /sys/class/backlight/intel_backlight/ -type f -name brightness -exec /bin/chown bob:bob {} \; -exec /bin/chmod 666 {} \; в командной строке, он работает нормально, но если я запускаю его в своем правиле разработчика, он все равно не работает.

Guy 16.09.2018 10:52
2
2
2 041
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему,

правило разработчика должно выглядеть так (без обратной косой черты)

KERNEL=="intel_backlight", SUBSYSTEM=="backlight", RUN+="/usr/bin/find /sys/class/backlight/intel_backlight/ -type f -name brightness -exec chown bob:bob {} ; -exec chmod 666 {} ;"

Но обратите внимание, что приведенная выше команда RUN не будет работать в командной строке терминала (для этого вам нужно иметь обратную косую черту)

Другие вопросы по теме