upstart
hat keine Einrichtung, die systemd
entspricht ist PermissionsStartOnly
Einstellung. Alle Prozesse im Job werden so ausgeführt, wie es der Benutzer über setuid
eingestellt hat Strophe, wie das Kochbuch sagt.
Machen Sie die Dinge also auf die Daemontools-Weise.
Verwenden Sie setuidgid
, setuidgid
, s6-setuidgid
, chpst
, runuid
, oder setuidgid
im exec
Strophe:
exec \ setuidgid somebody \ unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1
Das ist übrigens ein schrecklicher Logging-Mechanismus. Der Daemontools-Weg hätte ein richtiges, automatisch durchlaufendes, bei Bedarf rotierbares, größenbegrenztes Protokoll mit multilog
, multilog
, s6-log
, svlogd
, tinylog
, oder cyclog
. upstart
ist jedoch aufgrund seines expect
schwierig zu integrieren 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/
(Die chdir
Hier ist das Chain-Loading von nosh
Paket und ist nicht unbedingt erforderlich. Aber es macht die Sache etwas aufgeräumter.)