upstart
nemá žádné zařízení ekvivalentní systemd
's PermissionsStartOnly
nastavení. Všechny procesy v úloze běží podle nastavení uživatele pomocí setuid
sloka, jak říká kuchařka.
Takže dělejte věci způsobem daemontools.
Použijte setuidgid
, setuidgid
, s6-setuidgid
, chpst
, runuid
nebo setuidgid
v exec
sloka:
exec \ setuidgid somebody \ unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1
To je mimochodem hrozný logovací mechanismus. Způsob daemontools by měl správný, automaticky cyklovaný, otočný na vyžádání, omezený velikostí, pomocí multilog
, multilog
, s6-log
, svlogd
, tinylog
nebo cyclog
. upstart
je však obtížné se s nimi integrovat, vzhledem k jeho expect
mechanismus.
expect fork exec \ setuidgid somebody \ unicorn -D -c /opt/posty_api/unicorn.rb --env production 2>&1 | \ /usr/local/bin/chdir /var/log/ \ setuidgid log \ cyclog posty/unicorn/
(chdir
zde je řetězové načítání z nosh
balíček a není nezbytně nutný. Ale to dělá věci poněkud uspořádanější.)