Visudo Toda a senha Menos acesso ao script (Visudo + Cron)

1

Eu quero que meu usuário 'dave' seja capaz de executar um script bash sem digitar uma senha, para que o script possa ser executado com o crontab? Para todas as outras atividades, gostaria que este usuário fosse solicitado a digitar uma senha (como padrão). Eu sei que isso pode ser conseguido via visudo, mas não consigo fazer funcionar. Sintaxe errada talvez?

Minha entrada no Visudo:

dave    ALL=(ALL) ALL
dave    ALL=NOPASSWD: /home/dave/thescript.sh

Isso funciona na linha de comando, eu posso executá-lo sem digitar uma senha. Mas o cron está retornando [sudo] password for dave:

Meu crontab para o usuário 'dave' é:

0 * * * * /home/dave/thescript.sh

Muito obrigado,
Ross

    
por Ross 09.08.2010 / 12:10

2 respostas

3

O sudoers entry dave ALL=NOPASSWD: /home/dave/thescript.sh permite que o dave execute sudo /home/dave/thescript.sh sem digitar uma senha. Não diz nada sobre o uso de sudo desse script; sudo não se importa com qual script, se houver, o invocou.

Se todo o script for executado como root, chame-o com sudo /home/dave/thescript.sh no crontab. Mas então, por que não simplesmente colocar o script no crontab root ?

Caso contrário, se o script contiver uma linha sudo /path/to/mycommand arguments , coloque dave ALL=NOPASSWD: /path/to/mycommand arguments no arquivo sudoers. Isso será aplicado, não importa onde dave execute mycommand .

    
por 09.08.2010 / 12:43
3

Sua entrada acima permite que a dave execute /home/dave/thescript.sh via sudo sem digitar uma senha.

No entanto, você não está executando thescript.sh via sudo .

Você precisará adicionar uma entrada semelhante para o comando que o script está tentando executar via sudo para o arquivo sudoers, por exemplo,

dave ALL=NOPASSWD: /path/to/special/command
    
por 09.08.2010 / 17:54

Tags