Ich habe einen Dienst in Form einer node.js-Anwendung, die mit Systemd auf Raspbian Jessie eingerichtet wurde und ein eigenes Benutzerkonto verwendet. Ich stelle jedoch fest, dass der Dienst nicht ordnungsgemäß ausgeführt wird, da er nicht über die erforderlichen Berechtigungen verfügt. Eines der von mir installierten Knotenmodule erfordert Root-Zugriff. Wenn ich die Anwendung manuell mit sudo starte, funktioniert alles einwandfrei.
Gibt es eine Möglichkeit, systemd anzuweisen, den Dienst mit sudo auszuführen?
systemd
die Unit-Dateien mit Root-Rechten ausgeführt.Antworten:
sudo
hat nichts damit zu tun.In der Regel weisen Sie systemd an, einen Dienst als einen bestimmten Benutzer / eine bestimmte Gruppe mit der Anweisung
User=
undGroup=
im[Service]
Abschnitt der Unit-Datei auszuführen .Setzen Sie diese auf "root" (oder entfernen Sie sie, da "running as root" die Standardeinstellung ist).
quelle
User=root
. Siehe meine Antwort.Zum Löschen werden
systemd
Systemdienste standardmäßig als Root ausgeführt, es besteht jedoch immer noch ein Unterschied zwischen dem Standardverhalten und dem Ausführen eines Systemdienstes mitUser=root
.Wie in Umgebungsvariablen in gespawnten Prozessen dokumentiert , werden diese Variablen nur gesetzt, wenn
User=
gesetzt ist:Ich habe getestet, um diesen Befund zu bestätigen. Wenn Sie also einen systemd-Dienst als root ausführen möchten, der eine der oben genannten Variablen benötigt, müssen Sie festlegen
User=root
.quelle
eine vorübergehende Lösung, die aber zur Not funktioniert:
Kann mit einem Benutzer ausgeführt werden, der über folgende sudo-Berechtigungen in einer systemd-Unit-Datei verfügt:
quelle
sudo
verlangsamt die Verwendung den Start ein wenig. Und es ist unnötig.Führen Sie es als Systembenutzer aus. In diesem Fall wird der Dienst standardmäßig als Root ausgeführt.
quelle