Рубрика:
Разработка /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
РАШИД АЧИЛОВ, поклонник FreeBSD с многолетним опытом использования ее в совмещенных с Windows сетях и сторонник Open Source. Администратор сетей и средств защиты крупной торговой сети, shelton@sheltonsoft.ru
Разработка программного модуля PAM
Как создать свой собственный PAM-модуль, реализующий тот или иной функционал? Особенности разработки и отладки модулей PAM
Описание модуля
В «Системном администраторе» №9 за 2013 год была опубликована статья «Использование PAM», в которой рассказывалось об общих принципах его построения, о преимуществах, которые дает его использование, о том, как правильно составить файл сервиса и каким образом вызывать программные модули PAM. В данной статье мы рассмотрим вопрос с точки зрения программиста – как разработать собственный модуль PAM, и зачем он нам может пригодиться.
Что такое PAM-модуль и зачем его разрабатывать
PAM-модуль – это динамическая библиотека (файл с расширением .so), содержащая набор функций, которые вызываются для реализации некоторого сервиса, например, проверить логин и пароль на сервере LDAP или же наличие домашнего каталога и создать его, если его нет. В приводимом ниже файле сервиса pam_unix.so, pam_ldap.so и pam_mkhome.so – это имена PAM-модулей.
Разрабатывается собственный модуль обычно для расширения функционала PAM, для добавления в него возможностей, изначально отсутствующих, например, создание домашнего каталога при первом подключении пользователя изначально в PAM не заложено.
Или столь любимый мной метод авторизации в домене Active Directory без Samba основан на использовании PAM-модуля pam_ldap, предыдущий же метод – с Samba – на модуле pam_winbindd. Эти модули тоже отсутствуют в OpenPAM, первый устанавливается из ports/security/pam_ldap, второй – из пакета Samba.
Проблема, которая привела к разработке модуля pam_mkhome.so, возникла одновременно с появлением возможности аутентификации по удаленным серверам – тот же pam_ldap, например. Как правило, у пользователя отсутствует домашний каталог до тех пор, пока он не подключится к своему почтовому ящику в первый раз или же не зайдет в систему – постоянное создание домашних каталогов пользователям было бы бесполезной тратой рабочего времени админа.
Поэтому в файле PAM в сервисе account или session (а часто и там и там) присутствует некий модуль, который должен проверить наличие домашнего каталога и, если он отсутствует, создать его и скопировать туда типовые файлы с настройками.
Пример файла, где используется данный модуль, приводился в статье в предыдущем номере «СА», там же рассказывалось, почему данный модуль указан и в сервисе account и в сервисе session (вкратце: программа может не использовать сервис account или session, но, как правило, хотя бы один из них она использует).
Здесь мы приведем текст данного файла только для того, чтобы ссылаться на него:
auth sufficient pam_unix.so no_warn try_first_pass local_pass debug
auth required pam_ldap.so use_first_pass
account sufficient pam_unix.so
account required pam_mkhome.so mode=0700
session required pam_mkhome.so mode=0700
Параметр mode задает режим доступа к создаваемому домашнему каталогу. Другими допустимыми параметрами являются debug=N, где любое N, не равное 0, включает отладку, и skel=<pathway>, где pathway указывает на каталог, где находятся шаблоны настроечных файлов.
Статью целиком читайте в журнале «Системный администратор», №11 за 2013 г. на страницах 61-65.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|