Wie setze ich Berechtigungen in / sys / permanent?

12

Ich starte X als Benutzer und muss die Helligkeit meiner Tastatur einstellen /sys/class/leds/asus\:\:kbd_backlight/brightness. Das /sys/Verzeichnis wird nach dem Neustart neu erstellt, sodass auch die Berechtigungen zurückgesetzt werden. Wie richte ich es ein, damit die Datei nicht nach jedem Start für alle Benutzer beschreibbar ist?

Ich verwende Archlinux mit SDDM als Login-Manager und KDE als DE.

xoned
quelle
2
Sie können einen Befehl in einen systemd-Boot-Dienst einfügen.
Goldlöckchen
Wollen Sie einen eigenen systemd-Dienst erstellen, der die Berechtigungen festlegt? Oder sprichst du aus einer bestimmten Datei?
Xoned
Das Vorherige. "Service" ist der Systembegriff, obwohl es sich in diesem Fall nur um einen einmaligen Befehl und nicht um einen Daemon handelt. Sie könnten es zu einer Art "Sonstigem" Dienst machen, wie es rc.local unter sysV gibt. In diesem Fall führt der Dienst nur ein Shell-Skript aus, und Sie geben den Befehl dort ein.
Goldlöckchen

Antworten:

13

Nein, Sie können nicht, die Berechtigung von sysfs wird im Kernel-Space definiert und kann nicht mit Userspace-Tools geändert werden (es sei denn, dies wird vom Kernel unterstützt).

Aber für Ihr eigenes Problem könnten Sie einen sudo-Eintrag einrichten, der es jedem erlaubt, auf diesen Pfad zu schreiben, d. H ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

Und wenn Sie in dieses Verzeichnis schreiben, verwenden Sie ein Skript wie dieses, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

Gänseblümchen
quelle
Ich habe das versucht, aber es fragt immer nach dem Passwort. Ich habe auch versucht, ein NOPASSWD hinzuzufügen: hinter dem (ALL).
Xoned
@Timo kannst du es nochmal versuchen? Siehe meine Updates
Gänseblümchen
Es funktioniert jetzt. Das Problem war, dass mein Eintrag von einem anderen ohne NOPASSWD überschrieben wurde. Und ich habe deine Antwort akzeptiert, weil es einfacher war als die anderen Antworten. Vielen Dank an alle.
Xoned
Ich benutze Linux Mint Debian in Sony Vaio und versuche, eine Datei in /sys/devices/platform/sony-laptop/kbd_backlightzu erstellen , um die Tastaturbeleuchtung zu steuern. Ich habe den Pfad in Ihrem Code geändert, der zu diesem Fehler führt: bash: syntax error near unexpected token ("Der Befehl, den ich eingegeben habe, lautet ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightPlease help
Indra
Ich konnte dies auf einem Ubuntu-Rechner nicht zum Laufen bringen, bis ich ein Komma zwischen /usr/bin/teeund einfügte /sys/class.... Nach einem kurzen Blick auf die Grammatik in man sudoersvermute ich, dass das Komma notwendig ist.
Jake Mitchell
4

Das /sysVerzeichnis unter Linux ist gefälscht, es ist ein Blick in den Kernel, der als Dateien verkleidet ist. Es bedeutet also, die Berechtigungen permanent zu ändern, den Kernel zu hacken, und das wäre nicht ratsam. Wie aus den Kommentaren hervorgeht, ist dies möglicherweise eine systemdEinstellung für eine Einheit (stellen Sie die Änderung im Allgemeinen als Teil des Startvorgangs ein).

vonbrand
quelle
4

Ich hatte ein ähnliches Problem. Ich musste die Berechtigungen festlegen, bevor der Nodered-Dienst ausgeführt werden konnte. Nach dem Kommentar von goldilocks habe ich dieses systemd-Skript erstellt:

$ 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

Nachdem ich die Servicedatei geschrieben habe, habe ich sie mit aktiviert

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
hariseldon78
quelle
Ist dies im Allgemeinen der richtige Weg, um Schreibzugriff auf bestimmte / sys / -Pfade zu gewähren? Mein Anwendungsfall ist das Einstellen der Helligkeit der Hintergrundbeleuchtung auf meinem Laptop.
Richrd
Ich vermute, es liegt daran, dass der Sys-Pfad bei jedem Start neu erstellt wird. Aber ich bin nicht fachkundig genug, um sicherzugehen.
Hariseldon78