Як встановити дозволи в / sys / permanent?


12

Я починаю X як користувач і мені потрібно встановити яскравість клавіатури /sys/class/leds/asus\:\:kbd_backlight/brightness. /sys/Каталог перестворює після перезавантаження, так що дозволи будуть скинуті теж. Як налаштувати його так, що мені не потрібно робити файл для запису всіма користувачами після кожного завантаження?

Я використовую Archlinux з SDDM як менеджер входу та KDE як DE.


2
Ви можете поставити команду в службу завантаження системи.
золотинок

Ви маєте намір створити власну системну службу, яка встановлює дозволи? Або ви розмовляєте з певного файлу?
Xoned

Колишній. "Сервіс" - це системний термін, хоча в цьому випадку це була б просто разова команда, а не демон. Ви можете зробити це своєрідною послугою "різні речі", наприклад, rc.local знаходиться під системою sysV. У цьому випадку служба просто запускає скрипт оболонки, і ви кладете туди команду.
goldilocks

Відповіді:


13

Ні, ви не можете, дозвіл sysfs визначається в просторі ядра і не може бути змінений за допомогою інструментів простору користувачів (якщо тільки немає підтримки на стороні ядра).

Але для вашої власної проблеми ви можете встановити запис sudo, який дозволить кожному записатись на цей шлях, тобто ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

І коли ви пишете в цей каталог, використовуйте такий сценарій, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"


Я спробував це, але він завжди запитує пароль. Я також спробував додати NOPASSWD: позаду (ALL).
Xoned

@Timo, можна спробувати ще раз? Дивіться мої оновлення
ромашка

Це працює зараз. Проблема полягала в тому, що мій запис був замінений іншим без NOPASSWD. І я прийняв вашу відповідь, тому що було легше, як і інші відповіді. Дякую усім.
затримано

Я використовую linux Mint Debian в sony vaio і намагаюся створити файл /sys/devices/platform/sony-laptop/kbd_backlightдля управління підсвічуванням клавіатури. Я змінив шлях у вашому коді, що призводить до цієї помилки: bash: syntax error near unexpected token ("Команда, яку я набрав - ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightБудь ласка, допоможіть
Індра

Я не зміг зробити це на машині Ubuntu, поки не додав кому між /usr/bin/teeі /sys/class.... Після короткого огляду граматики, man sudoersя підозрюю, що кома потрібна.
Сейдж Мітчелл

4

/sysКаталог в Linux є підробленою, це погляд у ядро нарядили в вигляді файлів. Тож змінювати дозволи в ньому постійно означає hackig ядро, і це було б нераціонально. Як зазначають коментарі, можливо, systemdвстановлення цього блоку було б рішенням (загалом, встановити зміни як частину завантажувального процесу).


4

У мене була подібна проблема, мені потрібно було встановити дозволи перед запуском вузлової служби. Після коментаря goldilocks я створив цей системний сценарій:

$ cat /etc/systemd/system/setledspermissions.service

[Unit]
Description=Set leds writable to everybody
Before=nodered.service

[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"

[Install]
WantedBy=multi-user.target

Після написання службового файлу я включив його

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service

Це взагалі такий шлях, коли потрібно надати доступ запису певним / sys / paths? Моїм випадком використання є встановлення яскравості підсвітки екрана на моїй верхній панелі.
Річрд

Я думаю, це тому, що шлях sys відтворює кожен завантажувач. Але я недостатньо експертний, щоб бути впевненим у цьому.
hariseldon78
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.