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.)