Alterando o usuário em um script?

2

Estou tentando alterar o usuário para executar um comando específico durante a inicialização. Ele falha silenciosamente e, aparentemente, a troca de informações não é realizada, pois posso dizer que o comando não foi executado.

O que estou fazendo de errado no meu abaixo mostrado initscript?

respawn
console none

start on startup
stop on shutdown

script
  su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script
    
por Industrial 24.02.2012 / 11:01

2 respostas

5

Estou assumindo que você está executando uma versão recente do ubuntu ou uma distribuição baseada em upstart . Você pode verificar /var/log/daemon.log para erros.

O padrão su aceita a sintaxe su [options] [username] . Checkout man 1 su . Você pode querer tentar:

su -c "myCommand" anotheruser >> "myLogfile.log"

Além disso, algumas coisas aconteceriam (principalmente não desejáveis)

  1. myLogfile.log seria de propriedade de root .
  2. myLogfile.log seria criado em / (diretório raiz) se você não usa um caminho absoluto como /tmp/myLogfile.log (porque o upstart é executado com o pwd configurado como / ).

Se você deseja que o arquivo seja de propriedade de anotheruser , você pode alternar o comando para.

su -c "myCommand >> /tmp/myLogfile.log" anotheruser

Isso pode causar problemas se você tiver sobra myLogfile.log de root de execuções anteriores ou se não tiver alterado myLogfile.log para algo como /tmp/myLogfile.log (normalmente, usuários comuns não podem criar arquivos em dir raiz/).

    
por 24.02.2012 / 13:03
2

Parece que você misturou a sintaxe de su e sudo .

su -c 'mycommand' anotheruser
sudo -u anotheruser 'mycommand'
    
por 24.02.2012 / 20:02