Ich versuche, einen benutzerspezifischen Dienst mit systemd auszuführen. Ich bin kein Administrator von Beruf, sondern eher ein Entwickler.
Ich teste derzeit meine Lösung auf einem Ubuntu 16.04, plane jedoch, die Lösung auf Centos 7 bereitzustellen. Ich hoffe, dass sich nichts wirklich ändern wird.
Bis jetzt schaffe ich es jedoch per Skript:
- Stellen Sie sicher, dass mein Dienst beim Starten über die Befehlszeile effektiv ausgeführt wird
- Erstellen Sie den Benutzer john mit einem
/home/john
Verzeichnis (ich brauche dieses Zuhause), aber kein Passwort . Ich habe gelesen, dass es sicherer wäre (und hoffe ich irre nicht ...). - Erstellen Sie das Verzeichnis
/home/john/.config/systemd/user
zum Speichern meiner Servicedateien. - Aktivieren Sie das Verweilen gemäß diesem Dokument
Jetzt möchte ich eine Sitzung mit john testen und die Dienste starten, aber es funktioniert nicht. Ich versuche es folgendermaßen zu machen:
sam$ sudo su - john john$ systemctl --user status my-service.service
und sammle dieses unangenehme:
Failed to connect to bus: No such file or directory
und egal, welchen status/start/stop/list-units
Befehl ich an Stelle des Status oben setze, ist immer die gleiche Nachricht.
Die Befehle, die mich mit der Sitzung von john verbinden, werden von dieser Zeile protokolliert:
$journalctl -e Jun 15 18:16:23 sam-dell sudo[5681]: sam : TTY=pts/2 ; PWD=/home/sam/IdeaProjects ; USER=root ; COMMAND=/bin/su - john Jun 15 18:15:02 sam-dell su[5491]: Successful su for john by root Jun 15 18:15:02 sam-dell su[5491]: + /dev/pts/2 root:john Jun 15 18:15:02 sam-dell su[5491]: pam_unix(su:session): session opened for user john by (uid=0) Jun 15 18:15:02 sam-dell su[5491]: pam_systemd(su:session): Cannot create session: Already running in a session
... und nichts passiert, wenn ich die systemctl
Befehle versuche .
Hinweis: Ich habe meinem Benutzer ein Passwort hinzugefügt, und es funktioniert immer noch nicht von dem in meiner Gnome-Sitzung meines sam
Benutzers geöffneten Terminal . Da mein Benutzer jetzt ein Passwort hat, lässt mich Ubuntu mit gnome darauf zugreifen und ich könnte das systemctl --user status/start/stop
problemlos ausführen, indem ich mich in der john gnome-Sitzung anmelde.
Hat jemand eine Idee? Ich nehme das Problem möglicherweise in die falsche Richtung, ich möchte einfach den systemd-Dienst als einen anderen Benutzer auf meinem Remote-Server ausführen. Ich vermute, dass ich es richtig gemacht habe, aber vielleicht nicht.
Vielen Dank für Ihre Hilfe