Ich führe svnserve auf einem Fedora 17-Computer mit der folgenden systemd-Servicedatei aus:
[Unit]
Description=Subversion Server
After=syslog.target network.target
[Service]
User=svn
Type=forking
Environment=HOME=/repos/svn
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /repos/svn
PIDFile=/run/svnserve/svnserve.pid
[Install]
WantedBy=multi-user.target
Dies funktioniert einwandfrei, solange / var / run / svnserve svn: svn gehört, wird jedoch beim Neustart unterbrochen, wenn dieser Besitz auf root: root zurückgesetzt wird. Ich möchte einen Pre-Launch-Schritt hinzufügen, der das Verzeichnis durchforstet.
Leider kann ich keine echte Dokumentation zu systemd-Einheitendateien finden, aber ich habe gesehen, dass einige 'ExecStartPre' verwenden, also habe ich Folgendes versucht:
ExecStartPre=/bin/chown svn:svn /run/svnserve
Leider schlägt dies mit dem Fehler "Operation nicht zulässig" fehl. Es sieht also so aus, als würde ExecStartPre auch als der in der Gerätedatei angegebene Benutzer ausgeführt.
Ich habe auch versucht, die Unit-Datei als root auszuführen und dann svnserve als svn-Benutzer über su zu starten, aber das führte zu einem vagen Fehler, dass die Befehlszeile ungültig war.
Wie können systemd-Einheiten Aktionen als root ausführen, bevor sie als bestimmter Benutzer ausgeführt werden?
yum reinstall subversion
PermissionsStartOnly=false
bewirkt, dass alle ExecStartPre
und ExecStartPost
Befehle ignoriert werden User
und als root ausgeführt werden.
/run
Verzeichnis und die PID-Datei bereits korrekt sein , aber viele davon sind mit dem Wechsel zu systemd und dem/usr
Verschieben kaputt gegangen .