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.