Comment accorder des droits sudo uniquement à des fichiers de script spécifiques?

17

Je voudrais qu'un utilisateur ait des droits sudo (sans vérification de mot de passe) sur quelques scripts shell sous un répertoire spécifique (dans mon cas, /usr/local/tomcat7/bin), et nulle part ailleurs. Quelle est la façon la plus simple d'accomplir cela?

Quelque chose comme ça /etc/sudoersne semblait pas fonctionner:

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

Réponses:

22

Je pense que vous y êtes presque. mettre un /à la fin de votre spécification d'annuaire

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

À partir de la page de manuel sudoers

Un répertoire est un nom de chemin d'accès complet se terminant par un «/». Lorsque vous spécifiez un répertoire dans une liste Cmnd_List, l'utilisateur pourra exécuter n'importe quel fichier dans ce répertoire (mais pas dans les sous-répertoires qu'il contient).

user9517
la source
Merci (aux deux répondeurs), ça a fonctionné! Note à moi: besoin d'invoquer les scripts directement (par exemple sudo catalina.sh stop) - cela ne fonctionne pas: sudo sh catalina.sh stop.
Jonik
7

Ajoutez une barre oblique «/» à la fin du chemin.

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