GPIO-Berechtigungen sauber festlegen

GPIO-Berechtigungen sauber festlegen

Können die Standardberechtigungen und der Besitz von /sys/class/gpio/-Dateien festgelegt werden, z. B. durch Konfigurieren von udev? Der Sinn wäre, eine echte GID für Prozesse zu haben, die auf GPIO-Pins auf einer Platine zugreifen können.

Die meisten "Lösungen" beinhalten Suid-Wrapper,Skripte mit Chownund vertrauenswürdige Binärdateien von Zwischenhändlern. Websuchen ergebenfehlgeschlagene Versuche, udev-Regeln zu schreiben.

(verwandt:Frage 1)

(Ressourcen:Abonnieren,linux,udev)

Antwort1

Ich habe /etc/udev/rules.d/99-gpio.rules hinzugefügt, um alle Berechtigungen richtig und sauber festzulegen:

SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", RUN+="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", RUN+="/bin/chown root:gpio /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value", RUN+="/bin/chmod 660 /sys%p/active_low /sys%p/edge /sys%p/direction /sys%p/value"

Antwort2

Für Ubuntu ausführen.

sudo apt install rpi.gpio-common

Antwort3

Ich verwende dies (vorausgesetzt, die GPIO-Gruppe wurde bereits erstellt):

/etc/udev/rules.d/99-gpio.rules

SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GRUPPE:="gpio", MODUS:="0660"

Antwort4

Die GPIO-Schnittstelle scheint nur für die Verwendung durch das System (UID-Root) konzipiert zu sein und verfügt nicht über die Funktionen einer /dev-Schnittstelle für Benutzerprozesse. Dies schließt Erstellungsberechtigungen ein.

Um Benutzerprozessen (einschließlich Daemons und anderen Systemdiensten) Zugriff zu gewähren, müssen die Berechtigungen irgendwann von einem Root-Prozess erteilt werden. Dies kann ein Init-Skript, ein Mittelsmann oder ein manueller (sudo) Befehl sein.

verwandte Informationen