upstart não tem nenhum recurso equivalente à configuração systemd PermissionsStartOnly . Todos os processos no job são executados conforme o usuário define via a setuid stanza , como diz o Cookbook.
Então, faça as coisas do jeito do daemontools.
Use setuidgid , setuidgid , s6-setuidgid , chpst , runuid ou setuidgid no exec estrofe:
exec \ setuidgid somebody \ unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1
É um mecanismo de registro terrível, por sinal. A forma do daemontools teria um registro adequado, com ciclo automático, rotacionável sob demanda, com tamanho limitado, usando multilog , multilog , s6-log , svlogd , tinylog , ou cyclog . upstart é difícil de integrar com esses, entretanto, dado seu mecanismo expect .
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/
(O chdir aqui é o pacote de carregamento em cadeia do pacote nosh e não é estritamente necessário. Mas torna as coisas um pouco mais ordenadas.)