установим 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 -D «cn=root,dc=mkm» -W -x -f /root/db1.ldif