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.


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"


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).


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.