У меня есть ситуация, когда я хочу, чтобы основной пользователь-администратор (с sudo для всех) имел sudo без пароля в качестве другого пользователя для одной команды. Насколько мне известно, это должно дать следующее в / etc / sudoers:
ramo ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo ALL=(ALL) ALL
Но похоже, что эти две строки конфликтуют, или вторая перезаписывает первую. Есть идеи, как этого добиться?
Ура
Рамо
РЕДАКТИРОВАТЬ: Оказывается, я немного неправильно понял, как работает sudo при указании пользователя. У меня создалось впечатление, что если у вас есть ALL = (otherUser), вам не нужно «sudo -u otherUser», а можно просто sudo. Это не так.
Порядок важен, а поведение описано на странице руководства sudoers (5):
Когда для пользователя совпадают несколько записей, они применяются по порядку. Если есть несколько совпадений, используется последнее совпадение (которое не обязательно является самым точным совпадением).
С вашими исходными правилами "(ВСЕ) ВСЕ" является последним совпадением, поэтому 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
Я думаю, что можно отрицать с помощью '!'. Попробуйте вторую строку
ramo ALL=(ALL) !/usr/bin/command