Несколько типов sudo для одного пользователя

Несколько типов sudo для одного пользователя

У меня ситуация, когда я хочу, чтобы главный пользователь-администратор (с sudo для всех) имел беспарольный sudo как другой пользователь для одной команды. Насколько мне известно, это должно дать следующее в /etc/sudoers:

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

Но похоже, что эти две строки конфликтуют, или вторая перезаписывает первую. Есть идеи, как это сделать?

Ваше здоровье

Рамо

EDIT: Оказывается, я немного не понял, как работает sudo при указании пользователя. У меня было впечатление, что если у вас ALL=(otherUser), то вам не нужно «sudo -u otherUser», а можно просто sudo. Это не так.

решение1

Порядок важен, а поведение описано на странице руководства sudoers(5):

Когда для пользователя совпадают несколько записей, они применяются по порядку. При наличии нескольких совпадений используется последнее совпадение (которое не обязательно является наиболее конкретным совпадением).

Согласно вашим исходным правилам, «(ALL) ALL» является последним совпадением, поэтому sudo запрашивает пароль.

Работает следующий /etc/sudoers:

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

например:

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

Протестировано на Fedora 19 с sudo-1.8.6p7-1

решение2

Я думаю, что можно отрицать с помощью '!'. Попробуйте вторую строку

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

Связанный контент