P: "Como devo usar sudo
de um script do upstart (ou qualquer outro tipo de inicialização / inicialização do sistema)?"
A: "Você não deveria".
O Sudo é realmente projetado para ser usado interativamente (daí a mensagem you must have a tty to run sudo
) - Não é a ferramenta certa para ser usada em scripts de inicialização não interativos.
Para fazer o que você quer, é necessário ter um pouco de hackery, porque o Upstart não suporta o lançamento de trabalhos como usuários sem privilégios (ainda que, um dia, eles consertem o problema). A questão era perguntada e respondida no SuperUser , mas vou reproduzi-la aqui como é igualmente valioso para os administradores:
Asking on the #upstart channel on freenode, the official take on the matter is:
A future release of Upstart will have native support for that, but for now, you can use something like:
exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters]