Назад | Перейти на главную страницу

Настройка sudo, чтобы не запрашивать пароль для запрещенных команд

Существует много информации о том, как заставить 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'