O que há de errado com esta configuração do arquivo sudoers?

0

Eu tenho que executar um script de shell como outro usuário, mas sem ser solicitado por uma senha.

Eu editei o arquivo /etc/sudoers com visudo , adicionando a seguinte linha.

_www  localhost=(otheruser) NOPASSWD:bin/sh /path/to/my/script.sh

Se eu entendi como sudo funciona, isso significa que o usuário _www tem permissão para executar como o usuário otheruser , sem ser solicitado por senha, apenas do host local.

Isso está correto? Porque o sistema continua a solicitar a senha.

    
por user3181041 10.01.2014 / 17:33

2 respostas

1

Eu acho que você precisa colocar o caminho para sh corretamente, você está perdendo o primeiro '/'

_www  localhost=(otheruser) NOPASSWD:/bin/sh /path/to/my/script.sh

Em seguida, tente o comando exatamente como aparece no arquivo. Supondo que você esteja logado como _www:

sudo -u otheruser /bin/sh /path/to/my/script.sh

se ainda for solicitado, algo está errado ...

    
por 10.01.2014 / 17:45
0

Aqui está uma linha de trabalho do meu arquivo sudoers:

www-data ALL=(ALL) NOPASSWD: /usr/local/bin/myapp

O problema que eu encontrei, no entanto, quando fazer isso funcionar no meu servidor não era realmente o arquivo sudoers, era como o executável estava sendo chamado a partir do aplicativo da web. Certifique-se de que a sintaxe da chamada do sistema no seu arquivo PHP ou Python esteja correta e que seus argumentos estejam sendo transmitidos corretamente.

Meu exemplo de trabalho é de um arquivo Python que usa subprocess.Popen e se parece com este snippet:

args = '/usr/bin/sudo /usr/local/bin/myapp -v'
p = Popen(args, stdout=PIPE, stderr=STDOUT, shell=True).communicate()

Espero que isso ajude.

    
por 10.01.2014 / 18:00

Tags