Tengo una situación en la que quiero que el usuario administrador principal (con sudo para todos) tenga sudo sin contraseña como otro usuario para un comando. Que yo sepa, eso debería dar lo siguiente en /etc/sudoers:
ramo ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo ALL=(ALL) ALL
Pero parece que esas dos líneas entran en conflicto o que la segunda sobrescribe la primera. ¿Alguna idea sobre cómo lograr esto?
Salud
ramo
EDITAR: Resulta que entendí un poco mal cómo funciona sudo al especificar un usuario. Tenía la impresión de que si tienes ALL=(otroUsuario) entonces no necesitabas 'sudo -u otroUsuario' sino que podías simplemente sudo. Este no es el caso.
Respuesta1
El orden es importante y el comportamiento se describe en la página del manual sudoers(5):
Cuando varias entradas coinciden para un usuario, se aplican en orden. Cuando hay varias coincidencias, se utiliza la última coincidencia (que no es necesariamente la más específica).
Con sus reglas originales, "(TODOS) TODOS" es la última coincidencia y, por lo tanto, sudo solicita la contraseña.
El siguiente /etc/sudoers funciona:
ramo ALL=(ALL) ALL
ramo ALL=(otherUser) NOPASSWD: /bin/whoami
p.ej:
$ sudo -k /bin/whoami
[sudo] password for ramo:
root
$ sudo -k -u otherUser /bin/whoami
otherUser
$ sudo -k -u otherUser /bin/true
[sudo] password for ramo:
$ sudo -k /bin/true
[sudo] password for ramo:
Probado en Fedora 19 con sudo-1.8.6p7-1
Respuesta2
Creo que puedes negar con '!'. Prueba la segunda línea
ramo ALL=(ALL) !/usr/bin/command