Como faço para iniciar trabalhos como um usuário não privilegiado no Upstart?

14

Estou usando a última versão de upstart para o Ubuntu 10,4 LTS. O upstart é iniciado com o sinalizador de kernel --debug.

Estou fazendo uma configuração de trabalho personalizada para o daemon nzbget. Basicamente, este trabalho tem um script de pré-inicialização que monta um sistema de arquivos, um script de pós-inicialização que desmonta o sistema de arquivos e uma linha exec nzbget -D .

O problema é que o daemon nzbget precisa ser executado como um usuário não privilegiado. Este recurso já está incluído no nzbget. De fato, quando executo o console sudo nzbget -D , o processo é executado como um usuário não privilegiado. Mas quando eu inicio o job upstart com a linha exec nzbget -D , o processo nzbget -D é executado como root. Como dito no livro de receitas, tentei usar o su -c "nzbget -D" user e também start-stop-daemon ambos sem a stanza esperada como advinda. Mas para ambos os comandos, como upstart rastreia o PID errado, eu acho que ele vê o processo principal como morto (devido a logs de inicialização) no final do processo de inicialização e, portanto, lança o script pós-processo que eu não quero.

= > Como posso fazer certo? Como é que o comando exec nzbget -D upstart faz o processo rodar como root, enquanto o comando sudo nzbget -D o executa como usuário não privilegiado?

    
por ashe 14.12.2011 / 10:10

2 respostas

12

Houve algum progresso com o lançamento da versão 1.4.:

% bl0ck_qu0te%

Você pode pegá-lo na página do LaunchPad , mas (estranhamente) eu não consigo ver um PPA, então você pode ter que compilar você mesmo .

Caso contrário, use su ou sudo em seu comando exec da seguinte forma:

su -c "<commands>" <username>
sudo -u <username> <commands>

Ambos fazem praticamente a mesma coisa, então escolha o que for mais feliz. Então, usando o seu comando de exemplo:

exec sudo -u me "nzbget -D"
    
por Oli 14.12.2011 / 13:50
4

Sugiro usar o sudo com a seguinte sintaxe:

sudo -u foouser foocommand

isto executa o comando foocommand como usuário foouser.

    
por Michael K 14.12.2011 / 11:11

Tags