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? pi
Fügt es den Benutzer zu den Berechtigungen von sudoers hinzu? Oder würde eine Zeile mit sudo am Ende der ~/.bashrc
Datei hinzugefügt ? Ich würde die zweite erraten, damit der pi
Benutzer keinen anderen Schaden anrichten kann?
/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.local
werden immer als root ausgeführt, sodass keine Hinzufügung erforderlich istsudo
.)Antworten:
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 .
quelle
Das Hinzufügen eines
sudo
in ~ / .bashrc sollte einwandfrei funktionieren. Bei einer Standard-Raspbian-Installation verfügt derpi
Benutzer 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
: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
sudo
erforderlich).quelle
sudo test.sh
In hat.bashrc
funktioniert. Aus irgendeinem Grund schienen die zweiten beiden Befehle nicht zu funktionieren, obwohl die Programmierung nach dem Wechsel zu root mit einwandfrei liefsudo su
und auch als Eigentum vonroot
in aufgeführt wurdels -l
.ls -l
angezeigt (z. B.-rw-r--r--
)?-rwxr-xr-x 1 root pi
s
nicht 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.