Ich habe einen Dienst, den ich mit Systemstart starten möchte. Ich habe dafür eine ap @ .service-Definition als Vorlage erstellt, weil es viele Instanzen geben kann.Kann ich ein Benutzer system mit 'systemctl --user' nach sudo su - myuser steuern?
Definiert in der Root-Systemd, das funktioniert gut, und startet und stoppt den Dienst mit dem System. Die Dienstinstanz wird wie erwartet mit systemctl enable [email protected]
installiert. Root kann den Dienst auch ohne Probleme starten und stoppen. Der Dienst wird in einem eigenen Konto (myuser), nicht root, ausgeführt, das von User = myuser in der ap @ .service-Vorlage gesteuert wird.
Aber ich möchte Benutzer 'myuser' in der Lage sein, ihren eigenen Dienst zu starten und zu stoppen, ohne die Systemsicherheit zu kompromittieren.
Ich wechselte zu einem Benutzer systemd, und aktiviert Verweilen mit loginctl enable-linger myuser
. Ich aktiviere dann den im Verzeichnis ~ myuser/.config/systemd/user definierten Dienst. Der Dienst startet und stoppt sauber mit dem System, wie vorgesehen. Wenn ich mich bei einem Terminal als 'myuser' anmelde, funktionieren systemctl --user start [email protected]
und systemctl --user stop [email protected]
beide perfekt.
Wenn ich jedoch als ein anderer Benutzer anmelden (Benutzer2) und sudo su - myuser
in einem Terminal ausführen, dann systemctl --user
Befehle jetzt mit der Fehlermeldung fehlgeschlagen "D-Bus-Verbindung fehlgeschlagen: keine solche Datei oder Verzeichnis".
Wie aktiviere ich systemctl --user
um nach einem sudo su - myuser
Befehl zu arbeiten, um den Benutzer zu wechseln?
Ist Ihr CWD immer noch das Home-Verzeichnis des anderen Benutzers? Einige Dienstprogramme haben Probleme, wenn der aufrufende Benutzer keine Berechtigung zum Anzeigen des aktuellen Verzeichnisses hat. – Dave
Hi Dave ... das Home-Verzeichnis hat gewechselt, erzwungen durch den - im sudo-Befehl. Das CWD wurde in das Home-Verzeichnis des neuen Benutzers geändert. – NeilCasey
Ah OK. Ignorier mich dann. – Dave