Vários tipos de sudo para um usuário

Vários tipos de sudo para um usuário

Tenho uma situação em que desejo que o usuário administrador principal (com sudo para todos) tenha o sudo sem senha como outro usuário para um comando. Que eu saiba, isso deve fornecer o seguinte em /etc/sudoers:

ramo   ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo   ALL=(ALL) ALL

Mas parece que essas duas linhas entram em conflito ou a segunda substitui a primeira. Alguma idéia de como fazer isso?

Saúde

Ramo

EDIT: Acontece que entendi um pouco mal como o sudo funciona ao especificar um usuário. Fiquei com a impressão de que se você tivesse ALL=(otherUser) então não precisaria 'sudo -u otherUser', mas poderia apenas sudo. Este não é o caso.

Responder1

A ordem é importante e o comportamento é descrito na página man sudoers(5):

Quando várias entradas correspondem a um usuário, elas são aplicadas em ordem. Onde houver múltiplas correspondências, a última correspondência será usada (que não é necessariamente a correspondência mais específica).

Com suas regras originais, "(ALL) ALL" é a última correspondência e então o sudo solicita a senha.

O seguinte /etc/sudoers funciona:

ramo   ALL=(ALL) ALL
ramo   ALL=(otherUser) NOPASSWD: /bin/whoami

por exemplo:

$ 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:

Testado no Fedora 19 com sudo-1.8.6p7-1

Responder2

Eu acho que você pode negar com '!'. Experimente a segunda linha

ramo ALL=(ALL) !/usr/bin/command

informação relacionada