Come impostare le autorizzazioni in / sys / permanent?


12

Sto avviando X come utente e devo impostare la luminosità della mia tastiera /sys/class/leds/asus\:\:kbd_backlight/brightness. La /sys/directory viene ricreata dopo il riavvio, quindi anche le autorizzazioni verranno ripristinate. Come faccio a configurarlo in modo da non dover rendere il file scrivibile da tutti gli utenti dopo ogni avvio?

Sto usando Archlinux con SDDM come gestore degli accessi e KDE come DE.


2
È possibile inserire un comando in un servizio di avvio di systemd.
— Riccioli d'oro

Intendi creare un proprio servizio systemd che imposta le autorizzazioni? O parli da un file specifico?
— Xoned

L'ex. "Servizio" è il termine systemd, anche se in questo caso sarebbe solo un comando una tantum e non un demone. Potresti renderlo una sorta di servizio "cose ​​varie" come rc.local è sotto sysV. In questo caso il servizio esegue solo uno script di shell e si inserisce il comando.
— Riccioli d'oro

Risposte:


13

No, non è possibile, l'autorizzazione di sysfs è definita nello spazio del kernel e non può essere modificata con gli strumenti di userspace (a meno che con il supporto lato kernel).

Ma per il tuo problema, potresti impostare una voce sudo che consenta a tutti di scrivere su quel percorso, ad es ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

E quando scrivi in ​​quella directory, usa uno script come questo, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"


L'ho provato, ma chiede sempre la password. Ho anche provato ad aggiungere un NOPASSWD: dietro a (TUTTI).
— Xoned

@Timo puoi riprovare? Vedi i miei aggiornamenti
— margherita

Ora funziona. Il problema era che la mia voce era stata sovrascritta da un'altra senza NOPASSWD. E ho accettato la tua risposta perché era più facile delle altre risposte. Ringrazia tutti.
— Xoned

Sto usando Linux Mint Debian in Sony Vaio e sto cercando di creare un file /sys/devices/platform/sony-laptop/kbd_backlightper controllare la retroilluminazione della tastiera. Ho modificato il percorso nel tuo codice che porta a questo errore: bash: syntax error near unexpected token (`` Il comando che ho digitato è ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightPlease help
— Indra

Non sono riuscito a farlo funzionare su una macchina Ubuntu finché non ho aggiunto una virgola tra /usr/bin/teee /sys/class.... Dopo un breve sguardo alla grammatica, man sudoerssospetto che la virgola sia necessaria.
— Sage Mitchell,

4

La /sysdirectory in Linux è falsa, è una vista nel kernel vestita come file. Quindi modificare i permessi in modo permanente significa hackerare il kernel, e sarebbe sconsigliato. Come dicono i commenti, forse systemdun'unità che imposta questa sarebbe una soluzione (in generale, imposta la modifica come parte del processo di avvio).


4

Ho avuto un problema simile, avevo bisogno di impostare le autorizzazioni prima di eseguire il servizio con un cenno del capo. Dopo il commento di goldilocks ho creato questo script systemd:

$ 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

Dopo aver scritto il file di servizio l'ho abilitato con

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

È generalmente questo il modo di procedere quando è necessario concedere l'accesso in scrittura a percorsi / sys / specifici? Il mio caso d'uso sta impostando la luminosità della retroilluminazione dello schermo sul mio ĺaptop.
— Richrd,

Immagino sia perché il percorso sys viene ricreato ad ogni avvio. Ma non sono abbastanza esperto per esserne sicuro.
— Hariseldon78,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.