Se hai start-stop-daemon
start-stop-daemon --start --quiet -u username -g usergroup --exec command ...
Per gli script init in stile systemd è davvero facile. Basta aggiungere un User=nella sezione [Servizio].
Ecco uno script init che uso per qbittorrent-nox su CentOS 7:
[Unit]
Description=qbittorrent torrent server
[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort
[Install]
WantedBy=multi-user.target
Sui sistemi RHEL, il /etc/rc.d/init.d/functions
script ha lo scopo di fornire qualcosa di simile a quello che vuoi. Se lo inserisci all'inizio del tuo script init, tutte le sue funzioni diventano disponibili.
La funzione specifica fornita per aiutare con questo è daemon
. Se hai intenzione di usarlo per avviare un programma simile a un demone, un semplice utilizzo potrebbe essere:
daemon --user=username command
Se è troppo pesante per ciò di cui hai bisogno, c'è runuser
(vedi man runuser
per tutte le informazioni; alcune versioni potrebbero richiedere -u
prima del nome utente):
/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"
Invece di sudo , prova
su - username command
Nella mia esperienza, sudo non è sempre disponibile sui sistemi RHEL, ma su è perché su fa parte del pacchetto coreutils mentre sudo è nel pacchetto sudo.