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