установим OPENLDAP yum install openldap-servers В /etc/rsyslog.conf нужно добавить строчку: local4.* /var/log/ldap Начиная с RedHat 6 OpenLDAP использует т.н. dynamic config: вся конфигурация хранится в формате LDIF в директории /etc/openldap/slapd.d Удалим эту директорию, т.к. мы будем использовать текстовый конфигурационный файл: # rm -rf /etc/openldap/slapd.d Создадим конфиг: /etc/openldap/slapd.conf ''include /etc/openldap/schema/core.schema\\ include /etc/openldap/schema/cosine.schema\\ include /etc/openldap/schema/inetorgperson.schema\\ include /etc/openldap/schema/nis.schema\\ pidfile /var/run/openldap/slapd.pid\\ access to attrs=userPassword\\ by self write by anonymous auth\\ by dn.base="cn=root,dc=mkm" write \\ by dn.exact="cn=proxyuser,ou=role,dc=mkm" read\\ by * read\\ access to *\\ by self write\\ by dn.base="cn=root,dc=mkm" write\\ by * read\\ database bdb\\ suffix "dc=mkm"\\ rootdn "cn=root,dc=mkm"\\ rootpw {SSHA}QHnsWT5s7ZRagWzfvMPK794I/hllxxS2\\ directory /var/lib/ldap\\ loglevel 256\\ '' Директивы include нужны для подключения схем каталогов LDAP - без них slapd не сможет даже прочитать строчку dc=tdc. Директива suffix определяет суффикс всех DN, обслуживаемых данным сервером, как правило это сетевой домен в форме dc=example,dc=com (в моем случае это tdc). rootdn - это имя сущности, представляющей администратора сервера, ее же пароль задается директивой rootpw. Создать пароль для директивы rootpw можно с помощью команды slappasswd. И наконец, database и directory задают бек-энд базы данных и расположения файлов с данными. В нашем случае это /var/lib/ldap - домашняя директория пользователя LDAP. Создаем пользователей и группы Теперь можно создать пользователя и группу для него. Но сначала потребуется описать некоторые каталоги ldap: корневой объект dc и организационные элементы (organizationalUnit) people для пользователей и groups для групп. Кроме этого нам потребуется специальная роль proxyuser для того, чтобы ее могли использовать клиенты pam_ldap. В данном примере мы создадим пользователя student и группу admins. Опишем их записи в формате LDIF и сохраним в файле /root/db1.ldap: '' ##описание корневого объекта\\ dn: dc=mkm\\ dc: mkm\\ description: Root LDAP entry for mkm\\ objectClass: dcObject\\ objectClass: organizationalUnit\\ ou: rootobject\\ #Организационная единица для пользователей\\ dn: ou=people,dc=mkm\\ ou: people\\ description: All people in organisation\\ objectClass: organizationalUnit\\ # Организационная единица для групп\\ dn: ou=groups,dc=mkm\\ ou: groups\\ description: All groups in organisation\\ objectClass: organizationalUnit\\ # Создаем группу admins\\ dn: cn=admins,ou=groups,dc=mkm\\ cn: admins\\ objectClass: top\\ objectClass: posixGroup\\ gidNumber: 300\\ #создаем пользователя\\ dn: uid=student,ou=people,dc=mkm\\ cn: student\\ givenName: student\\ sn: OGS Administrator\\ uid: student\\ uidNumber: 300\\ gidNumber: 300\\ homeDirectory: /home/student\\ mail: student@gmail.com\\ objectClass: top\\ objectClass: posixAccount\\ objectClass: shadowAccount\\ objectClass: inetOrgPerson\\ objectClass: organizationalPerson\\ objectClass: person\\ loginShell: /bin/bash\\ userPassword: {SSHA}END+Ybw46xtKrtsoUXd3+CEXdH6fHuUB\\ dn: ou=role,dc=mkm\\ objectclass: organizationalUnit\\ ou: role\\ dn: cn=proxyuser,ou=role,dc=mkm\\ cn: proxyuser\\ objectclass: top\\ objectclass: person\\ objectclass: posixAccount\\ objectclass: shadowAccount\\ uid: proxyuser\\ uidNumber: 64001\\ gidNumber: 55\\ homeDirectory: /home/proxyuser\\ loginShell: /sbin/nologin\\ userPassword:\\ sn: proxyuser\\ description: Account for read-only access\\ '' Для внесения обновлений в базу используем ldapadd ldapadd -D "cn=root,dc=mkm" -W -x -f /root/db1.ldif -x : не использовать sasl -D "dn" : под каким пользователем подключаться -W : запросить ввод пароля -f file : имя файла из которого брать информацию о добовляемом объекте. Для добавления еще одного пользователя в новый ldif файл внесем только информацию о пользователе. Для модификации используем файл mod1.ldif ''dn: uid=student,ou=people,dc=mkm\\ changetype: modify\\ replace: homeDirectory\\ homeDirectory: /dev/null\\ '' Далее выполним: ldapmodify -x -D 'cn=root,dc=mkm' -W -f /root/mod1.ldif Для поиска информации используется ldapsearch -x -LLL -b 'dc=mkm' 'uid=student' Если нужно удалить информацию нужно использовать. ldapdelete -x -D 'cn=root,dc=mkm' -W 'uid=student,ou=people,dc=mkm' Выполним поиск пользователя student Установим пароль proxyuser ldappasswd -D "cn=root,dc=mkm" -W -s proxypassword -x cn=proxyuser,ou=role,dc=mkm Настройка клиентов Установим openldap-клиент: # yum install openldap-clients nss-pam-ldapd В RedHat конфигурацию LDAP можно выполнить через графическую утилиту system-config-authentication или посредством команды authconfig. Во втором случае команда будет выглядеть следующим образом: # authconfig --enableldap --enableldapauth --ldapserver=ldap://172.16.0.211 --ldapbasedn="dc=mkm" --update Здесь ldapbasedn - путь до организационного элемента, хранящего пользовательские записи, а ldapserver - URL до ldap-сервера. Задать binddn и bindpw для pam_ldap нужно отдельно. Достаточно просто дописать следующие строчки в конфиг /etc/pam_ldap.conf: binddn cn=proxyuser,ou=role,dc=mkm bindpw proxypassword http://www.altlinux.org/OpenLDAP