План следующий:
- Подготовить LDAP-каталог для хранения данных о пользователях
- Подготовить систему для работы с LDAP-каталогом
- Настроить PAM-конфигурацию для работы с LDAP
- Протестировать работоспособность
1. Подготовка LDAP-каталогаВ LDAP-директории должны существовать записи о пользователях, которые будут иметь доступ к системе. Пример записи:
Также в LDAP-директории должен быть определен пользователь, имеющий доступ к "ветке" со всеми пользователями (доступ к паролям пользователей ему необязателен) - он будет использоваться для доступа к LDAP от имени системы. В рассматриваемом примере такой пользователь - cn=manager, o=Organization,c=lt (с паролем 'neskazu').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
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Не забыть создать в системе домашние директории для пользователей из LDAP-директории
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
...
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С включенным модулем pam_dhkeys система отказывалась аутентифицировать LDAP-пользователей. Поинтересовавшись, что это за модуль и поняв, что я его не использую, закомментировал зверя.
# 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.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
Ссылки:
- LDAP Authentication in Solaris 10
- Solaris 10 and Active Directory Integration
- Подключаемые Модули Аутентификации (PAM)
- PAM Administration (pdf)
- Manual Page for ldapclient
3 comments:
А если в LDAP каталоге сотня пользователей?Предлагаете для каждого из них home в ручную создавать? Есть какое-нибудь решение проблемы?
to anonymous:
Да поможет Вам shell ;)
да есть решение для вашей задачи, pam_mkhomedir
Post a Comment