Wie starte ich den Benutzerdienst eines anderen Benutzers als Root neu?

Wie starte ich den Benutzerdienst eines anderen Benutzers als Root neu?

Ich habe also dieses Szenario: user-aEs wird ein systemd-Benutzerdienst ausgeführt user-a-service. Ich bin Root und möchte diesen Benutzerdienst neu starten. Ich kann keine Möglichkeit finden, dies zu tun. Im Grunde möchte ich Folgendes:

systemctl --user user-a restart user-a-service

Bitte beachten Sie, dass diesenichtein normaler Systemdienst, der mit einem bestimmten Nicht-Root-Benutzer, aber einem tatsächlichen Benutzerdienst ausgeführt wird.

Antwort1

Dies ist nur möglich, indem Sie es systemctlals dieser Benutzer ausführen – und mit den entsprechenden Umgebungsvariablen, die es ihm ermöglichen, entweder den D-Bus-Benutzerbus oder den privaten Systemd-Socket zu finden:

sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service

Mit neueren systemd (v248) können Sie --machineLoopback-Verbindungen durch Angabe des speziellen Hostnamens verwenden .host; die Umgebungseinrichtung erfolgt durch automatischen Aufruf von PAM(login):

systemctl --machine [email protected] --user restart user-a-service

verwandte Informationen