Ключевые слова:solaris, ldap, auth, (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>
Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC)
Subject: LDAP аутентификация в Solaris
Оригинал: http://sozinov.blogspot.com/2007/06/solaris-ldap-authentication-with.html
Продолжая тему интеграции работающих сервисов с единой директорией
каталогов (LDAP), реализовал аутентификацию пользователей в Solaris 10
через PAM-модуль pam_ldap.
План следующий:
1. Подготовить LDAP-каталог для хранения данных о пользователях
2. Подготовить систему для работы с LDAP-каталогом
3. Настроить PAM-конфигурацию для работы с LDAP
4. Протестировать работоспособность
Перед тем как приступать к сборке всего этого "конструктора", советую
ознакомиться (освежить в памяти) с документацией по PAM-модулям.
1. Подготовка LDAP-каталога
В LDAP-директории должны существовать записи о пользователях, которые
будут иметь доступ к системе. Пример записи:
dn: uid=user3,ou=People,o=Organization,c=lt
uid: user3
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
gecos: Ivan Ivanov
sn: Ivanov
telephoneNumber: 37070022722
mail: user3@organization.lt
homeDirectory: /export/home/user3
loginShell: /usr/bin/bash
uidNumber: 1010
cn: user3
userPassword: {CRYPT}$1$Gw4bZGoA$cv7sLoqjquhfZiHIx5Hwi0
gidNumber: 1100
Также в LDAP-директории должен быть определен пользователь, имеющий
доступ к "ветке" со всеми пользователями (доступ к паролям
пользователей ему необязателен) - он будет использоваться для доступа
к LDAP от имени системы. В рассматриваемом примере такой пользователь
- cn=manager, o=Organization,c=lt (с паролем 'neskazu').
2. Подготовка операционной системы для работы с LDAP-директорией
В Solaris 10 (и прежних, как оказалось, версиях) есть команда
ldapclient, которая все сделает сама - нужно только правильно
сформировать запрос. Если указываемые значения содержат пробелы, их
необходимо обрамлять одинарными скобками. Например, на моей системе
это выглядело так:
ldapclient manual -v -a credentialLevel=proxy -a
authenticationMethod=simple -a 'proxyDN=cn=manager,o=My
Organization,c=lt' -a proxyPassword=neskazu -a
'defaultsearchbase=o=My Organization,c=lt '195.44.44.3
Команда создаст в системе необходимые для работы с LDAP файлы и
кое-что изменит не совсем верно - это касается файла
/etc/nsswitch.conf. В данном файле нужно будет поправить строку,
добавив запись возможность использовать dns для преобразования
dns-имен хостов (resolving)
hosts: dns ldap [NOTFOUND=return] files
Если все прошло без ошибок, то по команде getent passwd
# getent passwd
root:x:0:0:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
gdm:x:50:50:GDM Reserved UID:/:
webservd:x:80:80:WebServer Reserved UID:/:
nobody:x:60001:60001:NFS Anonymous Access User:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
user3:x:1010:1100:Ivan Ivanov:/export/home/user3:/usr/bin/bash
...
Не забыть создать в системе домашние директории для пользователей из
LDAP-директории
mkdir /export/home/user3
chown 1010:1100 /export/home/user3
3. Настроить PAM-модуль pam_ldap
В файле /etc/pam.conf внести следующие изменения:
other auth requisite pam_authtok_get.so.1
# other auth required pam_dhkeys.so.1
other auth required pam_unix_cred.so.1
other auth sufficient pam_unix_auth.so.1
other auth required pam_ldap.so.1
other account requisite pam_roles.so.1
other account sufficient pam_unix_account.so.1
other account required pam_ldap.so.1
С включенным модулем pam_dhkeys система отказывалась аутентифицировать
LDAP-пользователей. Поинтересовавшись, что это за модуль и поняв,
что я его не использую, закомментировал зверя.
Если в pam.conf какая-то служба описана отдельно (например
xscreensaver), то для нее необходимо также указать использование
модуля pam_ldap как и для 'other'.
После проделывания вышеприведенных процедур все должно заработать.
Если что-то не так, то на помощь приходит Syslog-система, правда
прежде чем ею воспользоваться, её конфигурационный файл
(/etc/syslog.conf) тоже требует доработки - например, такой:
auth.debug /var/log/authlog
причем, если файл /var/log/authlog не создан, создать пустышку и
заставить syslog перечиать свой файл конфигурации
# touch /var/log/authlog
# svcadm enable svc:/system/system-log:default
Ссылки:
1. LDAP Authentication in Solaris 10
2. Solaris 10 and Active Directory Integration
3. Подключаемые Модули Аутентификации (PAM)
4. PAM Administration (pdf)
5. Manual Page for ldapclient
А в соляре разве нету pam_mkhomedir? Отменили за ненадобностью?
А почему ldap не настраивается на работу с SSL'eм и не прикручивается аутентификация керберос?
----
ИМХО, должно быть так:
pam_krb5 модуль аутентифицирует юзера(секция auth,секция password)
nss_ldap авторизует(pam_ldap в account),
а рабочее окружение для пользователя создает pam_mkhomedir.
Или все это баловство существует только в ОС типо Linux или xBSD, а коммерческим Юниксам такое баловство никчему?
Да, кстати, а как автор предлагает решать проблему пользовательских данных, хранящихся, скажем на NFS'e, если все пользовательские каталоги создаются руками, и как автор предлагает отдавать на них права "законным владельцам" chown'ом?
ЗЫ: Я только начинаю разбирать соляру. Но я бы по этой статье учиться не стал.
ЗЫЫ: Принимаются комментарии)))
ЗЫЫЫ: Если что, просьба сильно не пинать)))))