Управление доступом с помощью модуля pam_listfile

С помощью модуля pam_listfile за любым РАМ-приложением можно закрепить список контроля доступа. Этот модуль может иметь только тип auth. Его аргументы описаны в табл. 5.12.

Для наглядности рассмотрим два примера. Предположим, в системе имеется гостевая учетная запись и необходимо запретить ей доступ к службе chsh. Команда chsh позволяет пользователю поменять свой интерпретатор команд, заданный по умолчанию в файле /etc/passwd. Список доступных интерпретаторов содержится в файле /etc/shells. Поскольку команда chsh поддерживает механизм РАМ, реализовать требуемое ограничение не составляет труда. Достаточно добавить в файл /etc/pam.d/chsh запись для модуля pam_listf ile, как показано в листинге 5.19.

Листинг 5.19. Конфигурационный файл команды chsh, содержащий вызов модуля pam_listfile

auth sufficient /lib/security/pam_rootok.so

auth required /lib/security/pam_listfile.so onerr=fail\

item=user sense=deny file=/etc/security/nochsh auth required /lib/security/pam_unix.so

account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so minlen=20 retry=3

password required /lib/security/pam_unix.so md5 use_authtok

session required /lib/security/pam_unix.so

Таблица 5.12. Аргументы модуля pam_listf ile ент Описание

onerr Имеет значение succeed или fail. Сообщает о том, что должен делать модуль

в случае возникновения ошибки (например, невозможно прочесть конфигурационный файл): вернуть код успешного завершения или код ошибки sense Имеет значение allow или deny. Задает тип списка: разрешающий или запрещающий

file Требует, чтобы был указан полный путь к конфигурационному файлу

item Принимает одно из следующих значений: user, tty, rhost, ruser, group

либо shell. Сообщает модулю о том, что именно следует искать в конфигурационном файле

apply Принимает имя пользователя либо имя группы (с префиксом). Имеет смысл,

только если аргумент item равен tty, rhost или shell

В этом файле упоминается незнакомый нам модуль pam_rootok. Ему соответствует управляющий флаг sufficient. Это означает, что в случае успешного завершения остальные модули типа auth не выполняются. Модуль pam_rootok проверяет, является ли текущий пользователь супернользователем. Последнему разрешается менять интерпретатор команд любого пользователя без всякой аутентификации (не нужно вводить пароль).

Но вернемся к модулюpam_listf ile. В листинге 5.19 задан аргумент onerr=f ail. Такая установка означает, что, если в процессе выполнения модуля возникнет какая-нибудь ошибка, работа модуля завершится неудачей. Поскольку это обязательный модуль, его сбой приведет к завершению процедуры аутентификации, и пользователь не сможет поменять интерпретатор команд. Сообщения об ошибках регистрируются в системе Syslog, поэтому их можно просмотреть в файле /var/log/messages. Всегда рекомендуется устанавливать значение fail, если только не выполняется отладка в защищенной среде (не подключенной к сети).

Остальные аргументы относятся к списку контроля доступа. В данном случае это файл /etc/security/nochsh. Аргумент item=user сообщает модулю о том, что в файле ищутся имена пользователей — по одному в строке. Аргумент sense=deny означает, что список является запрещающим, т.е. если имя пользователя будет найдено в списке, аутентификация завершится неудачей.

Теперь осталось лишь создать файл /etc/security/nochsh, указав в нем имена пользователей, которым запрещено вызывать команду chsh. Приведем пример:

guest joe


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок