Conceder permissão sem senha para script específico como usuário específico com sudo

2

Eu tenho um servidor rodando Debian Squeeze com as últimas atualizações. Eu tentei configurar o arquivo sudoers para permitir que o usuário www-data execução de um script de shell específico como um usuário específico. Eu usei visudo para isso e adicionei a linha:

www-data ALL=(img) NOPASSWD: /path/to/script/imgsync.sh

Então eu tentei chamá-lo como usuário www-data (eu supri da raiz para www-data primeiro):

sudo -u img /path/to/script/imgsync.sh

Para minha surpresa, ele ainda pede uma senha:

[sudo] password for www-data:

Eu esperava que NOPASSWD: cuidasse disso?

O que realmente me intriga: Eu tenho outro servidor com a mesma configuração, onde funciona sem senha. Além disso, tenho outras permissões semelhantes no mesmo servidor que também funcionam sem senha.

Eu até adicionei a linha

Defaults:www-data       !authenticate

com visudo (só para testar, não quero isso). Então, quando tentei novamente, recebi a mensagem de erro (contraditória):

Sorry, user www-data is not allowed to execute '/path/to/script/imgsync.sh' as img on servername.

Como posso fazer com que seja executado sem ter que fornecer uma senha (e sem dar mais direitos a www-data)?

    
por Erwin Brandstetter 24.02.2012 / 20:01

1 resposta

2

Acontece que nada está errado com a configuração acima. Nos meus testes, o script encontrou um diretório onde o usuário img não tinha permissões, o que causou o resultado como descrito.

Embora tudo funcione agora, ainda estou um pouco insatisfeito com a mensagem / comportamento de erro inútil de dash (shell não-login padrão).

Vou deixar o post, pode ser útil para os outros.

    
por 24.02.2012 / 22:14