¿Cómo otorgar derechos de sudo solo a archivos de script específicos?

17

Me gustaría que un usuario tenga derechos de sudo (sin verificación de contraseña) para un par de scripts de shell en un directorio específico (en mi caso /usr/local/tomcat7/bin), y en ningún otro lugar. ¿Cuál es la forma más sencilla de lograr esto?

Algo como esto /etc/sudoersno parecía funcionar:

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

Respuestas:

22

Creo que ya casi estás allí. pon un /al final de la especificación de tu directorio

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

Desde la página de manual de sudoers

Un directorio es un nombre de ruta completo que termina en '/'. Cuando especifica un directorio en una Cmnd_List, el usuario podrá ejecutar cualquier archivo dentro de ese directorio (pero no en ningún subdirectorio).

usuario9517
fuente
Gracias (a ambos respondedores), ¡funcionó! Nota mental: necesidad de invocar los scripts directamente (por ejemplo sudo catalina.sh stop) - esto no funciona: sudo sh catalina.sh stop.
Jonik
7

Agregue una barra inclinada '/' al final de la ruta.

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