Múltiples tipos de sudo para un usuario

Múltiples tipos de sudo para un usuario

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

información relacionada