Существует много информации о том, как заставить sudo не запрашивать пароли (NOPASSWD).
Допустим, у меня есть пользователь alice
, и эта строка в моих sudoers:
alice ALL=(root) NOPASSWD: /bin/myadmintool
Это прекрасно работает. Пользователь может запустить sudo /bin/myadmintool
и делать всякие вещи.
Однако, если бы пользователь сделал это:
sudo /bin/bash
Вот что происходит:
$ sudo /bin/bash
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Password:
Sorry, user alice is not allowed to execute '/bin/bash' as root on myhostname.
Я бы хотел, чтобы sudo переходил прямо к:
Sorry, user alice is not allowed to execute '/bin/bash' as root on myhostname.
... без запрос пароля.
Как я могу выразить это в файле sudoers только для этого пользователя?
После более внимательного чтения страница руководства sudoers, Я нашел рабочее решение!
Моя конфигурация sudoers для alice
выглядит так:
Defaults:alice !authenticate
alice ALL=(root) NOPASSWD: /bin/myadmintool
Имейте в виду, это по существу установит NOPASSWD для ВСЕ из alice
строки sudo. В моем случае это было намерением.
В authenticate
Опция определяется в руководстве как:
аутентифицировать
Если установлено, пользователи должны аутентифицироваться с помощью пароля (или других средств аутентификации), прежде чем они смогут запускать команды. Это значение по умолчанию можно изменить с помощью тегов PASSWD и NOPASSWD. По умолчанию этот флаг установлен.
В Defaults
опция позволяет вам определить пользователя, группу, список хостов и т. д. в соответствии с:
Default_Type ::= 'Defaults' |
'Defaults' '@' Host_List |
'Defaults' ':' User_List |
'Defaults' '!' Cmnd_List |
'Defaults' '>' Runas_List
поскольку authenticate
является логическим параметром конфигурации, его можно отменить / установить в false, выполнив !authenticate
.
В качестве обходного пути вы можете использовать неинтерактивный режим:
sudo -n эхо-тест
sudo: требуется пароль
Вы можете создать псевдоним для этого пользователя:
псевдоним sudo = 'sudo -n'