Si vous avez start-stop-daemon
start-stop-daemon --start --quiet -u username -g usergroup --exec command ...
Pour les scripts d'initialisation de style systemd, c'est vraiment facile. Vous ajoutez simplement un User=dans la section [Service].
Voici un script d'initialisation que j'utilise pour qbittorrent-nox sur CentOS 7 :
[Unit]
Description=qbittorrent torrent server
[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort
[Install]
WantedBy=multi-user.target
Sur les systèmes RHEL, le /etc/rc.d/init.d/functions
script est destiné à fournir similaire à ce que vous voulez. Si vous le sourcez en haut de votre script d'initialisation, toutes ses fonctions deviennent disponibles.
La fonction spécifique fournie pour aider à cela est daemon
. Si vous avez l'intention de l'utiliser pour démarrer un programme de type démon, une utilisation simple serait :
daemon --user=username command
Si c'est trop lourd pour ce dont vous avez besoin, il y a runuser
(voir man runuser
pour plus d'informations ; certaines versions peuvent nécessiter -u
avant le nom d'utilisateur):
/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"
Au lieu de sudo , essayez
su - username command
D'après mon expérience, sudo n'est pas toujours disponible sur les systèmes RHEL, mais su est, parce que su fait partie du package coreutils alors que sudo se trouve dans le paquet sudo.