установим OPENLDAP
yum install openldap-servers
В /etc/rsyslog.conf нужно добавить строчку:
local4.* /var/log/ldap
Начиная с RedHat 6 OpenLDAP использует т.н. dynamic config: вся конфигурация хранится в формате LDIF в директории /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-клиент:
В RedHat конфигурацию LDAP можно выполнить через графическую утилиту system-config-authentication или посредством команды authconfig. Во втором случае команда будет выглядеть следующим образом:
Здесь ldapbasedn - путь до организационного элемента, хранящего пользовательские записи, а ldapserver - URL до ldap-сервера. Задать binddn и bindpw для pamldap нужно отдельно. Достаточно просто дописать следующие строчки в конфиг /etc/pamldap.conf:
binddn cn=proxyuser,ou=role,dc=mkm
bindpw proxypassword