sudo: ¿Cómo permitir solo un argumento para un comando?

8

Quiero agregar una entrada a mis suoders para permitir que un usuario ejecute un comando con exactamente un argumento sin opción.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

¿Puedo hacer eso usando la sintaxis sudoers? ¿O necesito crear un script de ayuda?

Elrond
fuente
¿Es un argumento establecido como siempre -abc? o puede variar?
Mike
El [a-z]*ya es el argumento que quiero. Entonces es un argumento variable. (Yo uso / bin / echo solo para probar).
Elrond

Respuestas:

8

Que yo sepa, no puede pasar argumentos sin comando a sudo si ese argumento varía.

Puede especificar algo como esto:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Esto permitiría al usuario seguir algún archivo pero no otros archivos.

Si necesita pasar una variable, le recomiendo un script de contenedor.

Aquí hay un ejemplo de un contenedor rsync:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

Si buscas en Google sudo wrappers, puedes encontrar muchos más ejemplos.

Asegúrese de codificar todas las rutas y ejecutar comprobaciones de sanidad en la entrada si no se puede confiar en el usuario.

jeffatrackaid
fuente
2
Debería tener controles de cordura de todos modos. ¡No confíes en nadie! [/ paranoico]
Nathan C