Wenn Sie start-stop-daemon
habenstart-stop-daemon --start --quiet -u username -g usergroup --exec command ...
Für Init-Skripte im systemd-Stil ist es wirklich einfach. Sie fügen einfach ein User=im Abschnitt [Service] hinzu.
Hier ist ein Init-Skript, das ich für qbittorrent-nox unter CentOS 7 verwende:
[Unit]
Description=qbittorrent torrent server
[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort
[Install]
WantedBy=multi-user.target
Auf RHEL-Systemen der /etc/rc.d/init.d/functions
Das Skript soll das bieten, was Sie möchten. Wenn Sie dies ganz oben in Ihrem Init-Skript angeben, werden alle seine Funktionen verfügbar.
Die speziell dafür bereitgestellte Funktion ist daemon
. Wenn Sie beabsichtigen, es zum Starten eines Daemon-ähnlichen Programms zu verwenden, wäre eine einfache Verwendung:
daemon --user=username command
Wenn Ihnen das zu schwerfällig ist, gibt es runuser
(siehe man runuser
für vollständige Informationen; Einige Versionen benötigen möglicherweise -u
vor dem Benutzernamen):
/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"
Statt sudo , versuche es
su - username command
Meiner Erfahrung nach sudo ist auf RHEL-Systemen nicht immer verfügbar, aber su ist, weil su ist Teil des Coreutils-Pakets, während sudo befindet sich im sudo-Paket.