Авторизация через pam_ldap в Gentoo Linux
Администрирование
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/45.html
Есть каталог пользователей на удаленном сервере OpenLDAP. Всем им нужно предоставить возможность входить на заданный сервер, находящийся под управлением Gentoo Linux.
Примечание: Статья была впервые опубликована в электронном издании «Open Source» (выпуск №007 от 06.04.2006). Ее размещение на nixp.ru производится в соответствии с разрешением со стороны редакции и автора материала.
Постановка задачи
Есть каталог пользователей на удаленном сервере OpenLDAP. Всем им нужно предоставить возможность входить на заданный сервер, находящийся под управлением Gentoo Linux.
Подключение LDAP
В конфигурационном файле LDAP-клиента (/etc/ldap.conf) зададим сведения об удаленном сервере, к которому будем подключаться*:
host some.host.com base ou=shellusers,dc=some,dc=host,dc=com ldap_version 3 port 389 scope sub pam_login_attribute uid
Таким образом, по данным из LDAP будут авторизироваться пользователи группы shellusers сервера some.host.com по логинам, которые берутся из поля uid.
Для каждого пользователя, информация о котором хранится в LDAP, обязательно должны быть заданы следующие поля: ou (раздел организации/группа), uid (идентификатор пользователя), cn (полное имя), givenname (имя), sn (фамилия), objectClass (тип записи; может быть несколько значений, одним из которых и будет нужное posixAccount), uidNumber (числовой UID пользователя), gidNumber (числовой GID группы пользователя), homeDirectory (домашний каталог), loginShell (полный путь к интерпретатору shell пользователя). Пример:
ou: shellusers uid: kover cn: Andrey Kovrin givenname: Andrey sn: Kovrin objectClass: person objectClass: posixAccount uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/shellusers/kover loginShell: /bin/bash
* Вообще говоря, никто не мешает установить и сервер OpenLDAP на исходную машину с Gentoo. Просто ситуация, которая привела к написанию этой статьи, такого не подразумевала. Если же подобная необходимость возникнет, нужно поставить пакет с OpenLDAP:
# emerge openldap
Настроить /etc/openldap/slapd.conf и /etc/openldap/ldap.conf соответствующим образом (подробнее об этом написано в «Gentoo Guide to OpenLDAP Authentication»), после чего туда можно перенести данные о пользователях. Здесь поможет набор Perl-утилит migrationtools:
# emerge migrationtools
В случае успешной установки скрипты появятся в /usr/share/migrationtools.
Установка и настройка pam_ldap, nss_ldap
Теперь потребуется установить и настроить pam_ldap и nss_ldap. Первый пакет позволит средствами PAM (Pluggable authentication modules) авторизировать пользователей в системе, основываясь на их данных из OpenLDAP. Второй — использовать дополнительную информацию из LDAP-директорий.
Инсталляция банальна:
# emerge pam_ldap nss_ldap
Необходимо указать PAM, что мы хотим предоставлять пользователям доступ к системе по их данным из LDAP. Для этого приведем файл /etc/pam.d/system-auth приблизительно к следующему виду:
auth required pam_env.so auth sufficient pam_unix.so likeauth nullok shadow auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so
account sufficient pam_unix.so account sufficient pam_ldap.so
password required pam_cracklib.so retry=3 password sufficient pam_unix.so nullok use_authtok md5 shadow password sufficient pam_ldap.so use_authtok use_first_pass password required pam_deny.so
session required pam_limits.so session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ session optional pam_ldap.so
Модуль pam_mkhomedir.so, что очевидно из его названия, будет создавать домашние каталоги входящим в систему пользователям, если их (каталогов) еще не существует, заимствуя при этом стандартные настройки из каталога /etc/skel.
С NSS все еще проще. В конфигурационном файле /etc/nsswitch.conf к необходимым полям (passwd, shadow, group) должен быть добавлен параметр ldap, означающий, что данные могут выбираться и из LDAP-директорий. Т.е. три соответствующие строки будут выглядеть примерно так:
passwd: compat ldap shadow: compat ldap group: compat ldap
Теперь можно проверить, «подцепляются» ли пользователи из LDAP к общему /etc/passwd. Просмотр полного списка всех пользователей системы осуществляется командой:
$ getent passwd
Пользователи, представленные в этом списке, могут заходить на сервер. Если возникают какие-то ошибки (например, PAM не может подключиться к LDAP-серверу или в его настройках допущена ошибка, из-за которой пользователи не могут войти в систему), то они обычно легко отслеживаются в /var/log/messages.
Добавление ProFTPD
В качестве дополнительного примера использования системы авторизации через LDAP можно обратиться, например, к FTP-серверу ProFTPD. Установка традиционна:
# emerge proftpd
(Только учтите, что собирать ProFTPD надо с модулем mod_ldap.) В конфигурационный файл /etc/proftpd/proftpd.conf добавим несколько строк для активации LDAP:
LDAPServer some.host.com LDAPDoAuth on "ou=shellusers,dc=some,dc=host,dc=com" LDAPDefaultAuthScheme clear LDAPHomedirOnDemand on
Параметр LDAPDefaultAuthScheme задает схему аутентификации и принимает два значения: clear и crypt, выбираемые в зависимости от вида, в котором хранятся пароли пользователей. Включение последней опции выполняет функцию, аналогичную той, что и pam_mkhomedir.so, создавая каталог домашнего пользователя при входе на FTP, если такого нет (это полезно на тот случай, если пользователь в первый раз зайдет на свой FTP, а не shell).
Ссылки
-
Популярные в этом разделе:
- «Настройка сервера SSH (теория и практика)»,
- «Реализация отправки и приёма SMS с помощью Gnokii»,
- «Настройка сервера OpenLDAP».
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1