Programm automatisch als Root für GPIO ausführen?

7

Ich habe einen Raspberry Pi mit Raspbian, für den ich mich automatisch anmelden und dann automatisch ein Programm ausführen möchte, das den GPIO als Root verwendet.

Ich habe eine automatische Anmeldung, die gemäß dieser Website funktioniert .

Was ist der beste Weg, um ein Programm auszuführen, das GPIO benötigt? piFügt es den Benutzer zu den Berechtigungen von sudoers hinzu? Oder würde eine Zeile mit sudo am Ende der ~/.bashrcDatei hinzugefügt ? Ich würde die zweite erraten, damit der piBenutzer keinen anderen Schaden anrichten kann?

Mirams
quelle
5
Ich persönlich füge den Befehl hinzu /etc/rc.local. Auf diese Weise wird es beim Start ausgeführt, unabhängig davon, ob die automatische Anmeldung aktiviert ist oder nicht. (Befehle in /etc/rc.localwerden immer als root ausgeführt, sodass keine Hinzufügung erforderlich ist sudo.)
Gerben

Antworten:

5

Um Ihr Programm auszuführen, fügen Sie es einfach mit sudo zu ~ / .bashrc hinzu, da der pi-Benutzer bereits über sudoers-Berechtigungen ohne Kennwortauthentifizierung verfügt. Auf diese Weise wird das Programm beim Anmelden gestartet.

Sie können stattdessen eine Serviceeinheit erstellen. Verwenden Sie arch auf Ihrem Pi. Erstellen Sie einfach eine neue systemd-Einheitendatei in / etc / systemd / system und aktivieren Sie sie. Das Programm wird gestartet, wenn der Computer eingeschaltet wird .

Amedeo Baragiola
quelle
0

Das Hinzufügen eines sudoin ~ / .bashrc sollte einwandfrei funktionieren. Bei einer Standard-Raspbian-Installation verfügt der piBenutzer bereits über Sudoer-Berechtigungen.

Wenn es sich nur um ein einzelnes Programm handelt, das Sie ausführen möchten, können Sie es auch als Root ausführen.

Sie tun dies, indem Sie den Eigentümer als root festlegen und dann der Datei mitteilen, dass sie immer geladen wird, als ob der Eigentümer der Datei sie geöffnet hätte.

Nehmen wir an, ich habe ein Skript namens test.sh:

sudo chown root test.sh
sudo chmod +s test.sh

Der erste Befehl macht den Eigentümer root, der zweite Befehl weist ihn an, als Eigentümer der Datei zu laden.

Wenn wir den Befehl jetzt normal ausführen, sollte er als Root-Benutzer ausgeführt werden, unabhängig davon, wer ihn wo gestartet hat (nicht sudoerforderlich).

PiBorg
quelle
Ja, das Hinzufügen eines sudo test.shIn hat .bashrcfunktioniert. Aus irgendeinem Grund schienen die zweiten beiden Befehle nicht zu funktionieren, obwohl die Programmierung nach dem Wechsel zu root mit einwandfrei lief sudo suund auch als Eigentum von rootin aufgeführt wurde ls -l.
Mirams
Welche Berechtigungen wurden ls -langezeigt (z. B. -rw-r--r--)?
PiBorg
Es zeigt-rwxr-xr-x 1 root pi
Mirams
Das Sticky-Bit ist nicht gesetzt (das erste Symbol sollte snicht sein -), vielleicht habe ich den Befehl falsch verstanden. Ich habe die Reihenfolge und Syntax geändert, um sie an ein Setup-Skript anzupassen, das ich vor langer Zeit für etwas anderes geschrieben habe.
PiBorg
Ich fürchte, ich habe immer noch kein Glück mit den neuen Befehlen
mirams