Jak ustawić uprawnienia w / sys / permanent?

12

Zaczynam X jako użytkownik i muszę ustawić jasność klawiatury /sys/class/leds/asus\:\:kbd_backlight/brightness. /sys/Katalog zostanie odtworzona po ponownym uruchomieniu komputera, więc uprawnienia będą zbyt zresetować. Jak to skonfigurować, aby nie trzeba było zapisywać pliku przez wszystkich użytkowników po każdym uruchomieniu?

Używam Archlinux z SDDM jako menedżerem logowania i KDE jako DE.

xoned
źródło
2
Możesz umieścić polecenie w usłudze systemowej rozruchu.
goldilocks
Czy zamierzasz stworzyć własną usługę systemową, która ustawia uprawnienia? A może rozmawiasz z określonego pliku?
xoned
Były. „Usługa” jest terminem systemowym, chociaż w tym przypadku byłoby to jednorazowe polecenie, a nie demon. Możesz sprawić, że będzie to rodzaj usługi „różne rzeczy”, takie jak rc.local, pod sysV. W takim przypadku usługa po prostu uruchamia skrypt powłoki i wstawiasz tam polecenie.
goldilocks

Odpowiedzi:

13

Nie, nie możesz, pozwolenie sysfs jest zdefiniowane w przestrzeni jądra i nie może być zmienione za pomocą narzędzi przestrzeni użytkownika (chyba że z obsługą strony jądra).

Ale dla własnego problemu możesz ustawić pozycję sudo, która pozwoli wszystkim pisać na tej ścieżce, tj ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

A kiedy piszesz do tego katalogu, użyj takiego skryptu, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

stokrotka
źródło
Próbowałem tego, ale zawsze prosi o hasło. Próbowałem także dodać NOPASSWD: za (ALL).
xoned
@ Timo, możesz spróbować ponownie? Zobacz moje aktualizacje
stokrotka
Teraz działa. Problem polegał na tym, że mój wpis został zastąpiony innym bez NOPASSWD. I zaakceptowałem twoją odpowiedź, ponieważ była łatwiejsza niż inne odpowiedzi. Dziękuje wszystkim.
xoned
Używam Linuksa Mint Debian w Sony Vaio i próbuję utworzyć plik w /sys/devices/platform/sony-laptop/kbd_backlightcelu sterowania podświetleniem klawiatury. Zmieniłem ścieżkę w kodzie, co prowadzi do tego błędu: bash: syntax error near unexpected token ('' Polecenie, które wpisałem to ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightProszę o pomoc
Indra
Nie mogłem tego uruchomić na komputerze Ubuntu, dopóki nie dodałem przecinka między /usr/bin/teei /sys/class.... Po krótkim spojrzeniu na gramatykę man sudoers, podejrzewam, że przecinek jest konieczny.
Sage Mitchell
4

/sysKatalogu w systemie Linux jest fałszywy, to widok do jądra przebrany jako pliki. Zatem zmiana uprawnień w nim na stałe oznacza zhackowanie jądra i byłoby to niewłaściwe. Jak mówią komentarze, być może systemdustawienie jednostki byłoby rozwiązaniem (ogólnie rzecz biorąc, skonfiguruj zmianę w ramach procesu rozruchu).

vonbrand
źródło
4

Miałem podobny problem, musiałem ustawić uprawnienia przed uruchomieniem usługi węzłowej. Po komentarzu goldilocks stworzyłem ten skrypt systemowy:

$ 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

Po zapisaniu pliku usługi włączyłem go

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
hariseldon78
źródło
Czy ogólnie jest to odpowiedni sposób, gdy trzeba udzielić dostępu do zapisu określonym ścieżkom / sys /? Moim przypadkiem użycia jest ustawienie jasności podświetlenia ekranu na moim komputerze.
Richrd
Myślę, że dzieje się tak, ponieważ ścieżka systemu jest odtwarzana przy każdym rozruchu. Ale nie jestem wystarczająco ekspertem, aby być tego pewnym.
hariseldon78