Como conceder direitos sudo apenas para arquivos de script específicos?

17

Eu gostaria que um usuário tivesse direitos sudo (sem verificação de senha) para alguns scripts de shell em um diretório específico (no meu caso /usr/local/tomcat7/bin) e em nenhum outro lugar. Qual é a maneira mais simples de conseguir isso?

Algo assim /etc/sudoersnão parecia funcionar:

jsmith ALL=(ALL) NOPASSWD: /usr/local/tomcat7/bin
Jonik
fonte

Respostas:

22

Eu acho que você está quase lá. coloque um /no final da especificação do seu diretório

jsmith ALL=(ALL) NOPASSWD: /usr/local/tomcat7/bin/

Na página do manual sudoers

Um diretório é um nome de caminho completo que termina em '/'. Quando você especifica um diretório em uma Cmnd_List, o usuário poderá executar qualquer arquivo nesse diretório (mas não em nenhum subdiretório).

user9517
fonte
Obrigado (a ambos os respondentes), conseguiu! Nota to self: necessidade de invocar os scripts diretamente (por exemplo sudo catalina.sh stop) - isso não funciona: sudo sh catalina.sh stop.
31511 Jonik
7

Adicione uma barra '/' ao final do caminho.

jsmith ALL=(ALL) NOPASSWD: /usr/local/tomcat7/bin/
h0tw1r3
fonte