GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konfigurieren des Systemd-Dienstes für die Ausführung mit Root-Zugriff

Lösung 1:

Sagen Sie systemd, dass es den Dienst mit sudo ausführen soll ?

sudo hat nichts damit zu tun.

Normalerweise weisen Sie systemd an, einen Dienst als einen bestimmten Benutzer/eine bestimmte Gruppe mit einem User= auszuführen und Group= Direktive in [Service] Abschnitt der Unit-Datei.

Setzen Sie diese auf root (oder entfernen Sie sie, da sie standardmäßig als root ausgeführt werden).

Lösung 2:

Zum Löschen systemd Systemdienste werden standardmäßig als root ausgeführt, aber es gibt immer noch einen Unterschied zwischen dem Standardverhalten und dem Ausführen eines Systemdienstes mit User=root .

Wie in Umgebungsvariablen in erzeugten Prozessen dokumentiert, werden diese Variablen nur gesetzt, wenn User= gesetzt ist:

$USER, $LOGNAME, $HOME, $SHELL

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 User=root festlegen .

Lösung 3:

eine vorübergehende Lösung, aber zur Not zum Laufen gebracht:

/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'

Kann mit einem Benutzer ausgeführt werden, der sudo-Berechtigungen in einer systemd-Einheitendatei wie folgt hat:

[Unit]
Description=Rails Webserver
After=syslog.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT

[Install]
WantedBy=multi-user.target

Linux
  1. Linux – Wie bekommt man mit Systemd weniger Ttys?

  2. Wie führe ich einen Befehl aus, der Umleitung oder Piping mit Sudo beinhaltet?

  3. Stoppen der Systemd-Einheit zusammen mit einer anderen. Beginn der Arbeiten?

  4. Führen Sie ohne Root-Zugriff R mit optimiertem BLAS aus, wenn es mit Referenz-BLAS verknüpft ist

  5. Wie stoppen Sie den systemd-Dienst

So führen Sie Jenkins Container als Systemd-Dienst mit Docker aus

So führen Sie Container als Systemd-Dienst mit Podman aus

Jenkins mit Systemd und Docker installieren und ausführen

Verwalten von cgroups mit systemd

So führen Sie Pods als systemd-Dienste mit Podman aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus