Pokud máte start-stop-daemon
start-stop-daemon --start --quiet -u username -g usergroup --exec command ...
U init skriptů ve stylu systemd je to opravdu snadné. Stačí přidat User=v sekci [Service].
Zde je init skript, který používám pro qbittorrent-nox na CentOS 7:
[Unit]
Description=qbittorrent torrent server
[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort
[Install]
WantedBy=multi-user.target
Na systémech RHEL /etc/rc.d/init.d/functions
skript je určen k poskytování podobného tomu, co chcete. Pokud to zadáte jako zdroj v horní části vašeho init skriptu, všechny jeho funkce budou dostupné.
Specifická funkce, která vám s tím pomůže, je daemon
. Pokud jej zamýšlíte použít ke spuštění programu podobného démonu, jednoduché použití by bylo:
daemon --user=username command
Pokud je to příliš náročné na to, co potřebujete, existuje runuser
(viz man runuser
pro úplné informace; některé verze mohou potřebovat -u
před uživatelským jménem):
/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"
Místo sudo , zkuste
su - username command
Podle mých zkušeností sudo není vždy k dispozici na systémech RHEL, ale su je, protože su je součástí balíčku coreutils, zatímco sudo je v balíčku sudo.