Настройка беспарольного sudo для локальных пользователей

Материал из KLUG
Перейти к: навигация, поиск

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.

Пятое поле — список групп, в которые включать пользователя.

Система готова к работе.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты