Настройка беспарольного sudo для локальных пользователей
DRAFT
Статья описывает настройку беспарольного вызова sudo для локально зарегистрированных пользователей на основе Linux PAM (Pluggable Authentication Modules).
Внимание! В этой статье описывается использование модуля pam_group из GNU/Linux PAM. Модуль pam_group из семейства операционных систем BSD предназначен для других целей и выполняет другие действия, поэтому описанный в статье метод не подходит для операционных систем BSD. Предварительно прочитайте руководство к pam_group для своей системы.
$ man 8 pam_group
Содержание |
Вступление
Когда физический доступ к системе ограничен, и вероятность использования случайно оставленной открытой консоли посторонним человеком мала, целесообразно настроить выполнение программ с помощью sudo без запроса пароля. В случае же удаленного входа в систему с чужой машины sudo должна спрашивать пароль, чтобы злоумышленник, получивший доступ к консоли с авторизованным пользователем, не смог получить права root.
Что для этого нужно
В системе должны быть установлены:
- sudo
- PAM
- libpam-modules или иной пакет, содержащий pam_group.so.
В зависимости от дистрибутива названия пакетов могут отличаться.
Принцип работы
При аутентификации из программы локального входа (login, xdm) пользователь добавляется в группу wheel. При аутентификации из программы удаленного входа (sshd) пользователь добавляется в группу sudoer. Sudo настроена таким образом, чтобы спрашивать пароль у членов группы sudoer, и не спрашивать у членов группы wheel.
Создание группы
В большинстве дистрибутивов группа wheel уже присутствует в системе. Группу sudoer нужно создать вручную:
$ groupadd sudoer
Пользователь, для которого осуществляется настройка, не должен быть включен в группы wheel или sudoer в /etc/groups, так как модуль pam_group работает независимо от /etc/groups.
Настройка sudo
Программой visudo редактируем файл /etc/sudoers, чтобы он содержал следующие строки:
## разрешаем членам группы wheel беспарольное выполнение %wheel ALL=(ALL) NOPASSWD: ALL ## разрешаем членам группы sudoer выполнение с запросом пароля %sudoer ALL=(ALL) ALL
Настройка PAM
Заставляем PAM загружать модуль pam_group для сервиса аутентификации. Для этого нужно вставить строку
auth optional pam_group.so
в файлы, соответствующие программам аутентификации. В нашем случае это:
- /etc/pam.d/login
- /etc/pam.d/sshd
- /etc/pam.d/xdm
Если вы используете другие программы аутентификации, отредактируйте в /etc/pam.d/ соответствующие им файлы таким же образом.
Строка должна быть добавлена в конец списка сервисов auth:
#%PAM-1.0 ... auth required pam_securetty.so auth requisite pam_nologin.so auth required pam_unix.so nullok auth optional pam_group.so account required pam_access.so ...
Первое поле (название сервиса) auth указывает, что модуль загружается в процессе авторизации пользователя.
Второе поле (флаг управления) optional указывает, что результат работы модуля игнорируется. Вход в систему должен состояться даже если при добавлении пользователя в группу произошла ошибка.
Третье поле указывает имя загружаемой библиотеки модуля: pam_group.so.
Настройка pam_group
Конфигурация модуля pam_group хранится /etc/security/group.conf. В него добавляем следующие строки:
sshd;*;buratino;Al0000-2400;sudo login;*;buratino;Al0000-2400;wheel xdm;*;buratino;Al0000-2400;wheel
Первое поле указывает имя программы аутентификации, для которой применяется правило.
Второе поле указывает имя терминала, на котором происходит аутентификация. В данном случае — любой терминал.
Третье поле — имя пользователя, которому разрешается вход (buratino).
Четвертое поле — время действия правила. В данном случае — любой день, с 00:00 до 24:00.
Пятое поле — список групп, в которые включать пользователя.
Система готова к работе.