Установка будет выполняться на систему:
# uname -r
9.2-RELEASE
Выполняем поиск:
# cd /usr/ports/ && make search name='openldap-server' Port: openldap-server-2.4.36_2 Path: /usr/ports/net/openldap24-server Info: Open source LDAP server implementation Maint: [email protected] B-deps: db46-4.6.21.4 libltdl-2.4.2_2 libtool-2.4.2_2 openldap-client-2.4.36 R-deps: db46-4.6.21.4 libltdl-2.4.2_2 openldap-client-2.4.36 WWW: http://www.OpenLDAP.org/
Приступаем к конфигурированию и установке
# cd /usr/ports/net/openldap24-server/ # make config-recursive # make install clean
В окне конфигурации оставляем всё по-умолчанию, в случае необходимости можно будет пересобрать пакет, выполив повторное конфигрирование:
# cd /usr/ports/net/openldap24-server && make rmconfig && make config-recursive
Должна получиться такая конфигурация:
# make showconfig ===> The following configuration options are available for openldap-server-2.4.36_2: ACCESSLOG=off: With In-Directory Access Logging overlay ACI=off: Per-object ACI (experimental) AUDITLOG=off: With Audit Logging overlay BDB=on: With BerkeleyDB backend COLLECT=off: With Collect overy Services overlay CONSTRAINT=off: With Attribute Constraint overlay DDS=off: With Dynamic Directory Services overlay DEREF=off: With Dereference overlay DNSSRV=off: With Dnssrv backend DYNACL=off: Run-time loadable ACL (experimental) DYNAMIC_BACKENDS=on: Build dynamic backends DYNGROUP=off: With Dynamic Group overlay DYNLIST=off: With Dynamic List overlay FETCH=off: Enable fetch(3) support MDB=off: With Memory-Mapped DB backend MEMBEROF=off: With Reverse Group Membership overlay ODBC=off: With SQL backend PASSWD=off: With Passwd backend PERL=off: With Perl backend PPOLICY=off: With Password Policy overlay PROXYCACHE=off: With Proxy Cache overlay REFINT=off: With Referential Integrity overlay RELAY=off: With Relay backend RETCODE=off: With Return Code testing overlay RLOOKUPS=off: With reverse lookups of client hostnames RWM=off: With Rewrite/Remap overlay SASL=off: With (Cyrus) SASL2 support SEQMOD=on: With Sequential Modify overlay SHA2=off: With SHA2 Password hashes overlay SHELL=off: With Shell backend (disables threading) SLAPI=off: With Netscape SLAPI plugin API SLP=off: With SLPv2 (RFC 2608) support SMBPWD=off: With Samba Password hashes overlay SOCK=off: With Sock backend SSSVLV=off: With ServerSideSort/VLV overlay SYNCPROV=on: With Syncrepl Provider overlay TCP_WRAPPERS=on: With tcp wrapper support TRANSLUCENT=off: With Translucent Proxy overlay UNIQUE=off: With attribute Uniqueness overlay VALSORT=off: With Value Sorting overlay ===> Use 'make config' to modify these settings
Добавляем LDAP в автозапуск. В файл /etc/rc.conf
добавляем строку:
slapd_enable="YES"
Переходим к настройке демона slapd
:
# vim /usr/local/etc/openldap/slapd.conf
Можно сразу подключить набор готовых схем:
# cat /usr/local/etc/openldap/slapd.conf | grep include include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema include /usr/local/etc/openldap/schema/misc.schema include /usr/local/etc/openldap/schema/nis.schema include /usr/local/etc/openldap/schema/openldap.schema
Изменяем при необходимости такие строки:
database bdb suffix "dc=sqd_ldp" rootdn "cn=root,dc=sqd_ldp"
Можно задать несколько суффиксов, определив их каждый в отдельной строке.
Пока оставляем пароль для администратора как есть:
rootpw secret
Сохраняем файл, и проверяем корректность настроек:
# slaptest -u config file testing succeeded
Делаем тестовый запуск, что бы сервер создал необходимые каталоги:
# service slapd status slapd is not running.
# service slapd start Starting slapd.
# service slapd status slapd is running as pid 41527.
# service slapd stop Stopping slapd. Waiting for PIDS: 41527.
Копируем файл конфигурации базы:
# cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIG # chown ldap:ldap /var/db/openldap-data/DB_CONFIG
Иначе будет ошибка вида:
Oct 19 14:34:25 sqd_ldp slapd[1994]: bdb_db_open: warning - no DB_CONFIG file found in directory /var/db/openldap-data: (2). Expect poor performance for suffix "dc=sqd_ldp".
Запускаем LDAP сервер:
# service slapd start Starting slapd.
Проверяем:
# service slapd status slapd is running as pid 151.
# netstat -an | grep 389 tcp4 0 0 *.389 *.* LISTEN tcp6 0 0 *.389 *.* LISTEN
# ldapsearch -x -b dc=sqd_ldp # extended LDIF # # LDAPv3 # base <dc=sqd_ldp> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1 # tail /var/log/debug.log Oct 19 15:25:03 sqd_ldp slapd[2227]: @(#) $OpenLDAP: slapd 2.4.36 (Oct 18 2013 19:50:28) $ root@sqd_ldp:/usr/ports/net/openldap24-server/work/openldap-2.4.36/servers/slapd Oct 19 15:25:04 sqd_ldp slapd[2228]: slapd starting
В одной из рекомендаций сказано, что в случае выполнения любых команд LDAP-а, начинающихся с префикса slapd
– сам демон slapd
обязательно должен быть выключен, а при использовании команд с префиксом ldap
– всегда должен быть запущен. Иначе может быт ьповреждена вся база.
Исключение – это команда slappasswd
.
Создадим пароль для пользователя root
с помощью утилиты slappasswd
. Поддерживаются такие ключи:
-h
– тип используемого хеширования, поддерживаются значения {CRYPT}, {MD5}, {SMD5}, {SSHA}, {SHA} и {CLEARTEXT};
-s
– “секретная последовательность”, т.е. сам пароль, хеш которого надо получить
-T
– полный путь к файлу с паролем, который необходимо захешировать;
-v
– подробный режим
Примеры выполнения:
// используем CLEARTEXT, т.е. без кодирования пароля $ slappasswd -h {CLEARTEXT} New password: Re-enter new password: test
// зададим пароль test, тип хеширования не указываем - по-умолчанию будет использован SSHA $ slappasswd -s test {SSHA}MZKJotYll3Uae3HG8bItoSuoUKO40Hv4
// генерируем хеш пароля test с помощью MD5 $ slappasswd -s test -h {MD5} {MD5}CY9rzUYh03PK3k6DJie09g==
Возвращаемся к файлу конфигурации сервера, и редактируем строку rootpw
:
... # Use of strong authentication encouraged. rootpw {SSHA}MZKJotYll3Uae3HG8bItoSuoUKO40Hv4 ...
Сохраняем файл, и выполняем проверку корректности настроек:
# slaptest -u config file testing succeeded
Теперь добавим в нашу базу записи. Начинаем с добавления записи о самом каталоге sqd_ldp
:
# cat base.ldif dn: dc=sqd_ldp objectClass: dcObject objectClass: organization objectClass: top dc:sqd_ldp
Выполняем ldapadd
:
# ldapadd -x -D "cn=root,dc=sqd_ldp" -W -f base.ldif Enter LDAP Password: adding new entry "dc=sqd_ldp"
Ключи ldapadd
:
-x
: не использовать sasl
;
-D
: имя пользователя, под которым выполняем запрос;
-W
: запросить ввод пароля;
-f file
: имя файла из которого брать информацию о добавляемом объекте.
Если вы хотите полностью удалить все записи, и добавить заново – можно просто очистить каталог /var/db/openldap-data/
:
# rm -rf /var/db/openldap-data/*
# service slapd restart Stopping slapd. Waiting for PIDS: 2228. Starting slapd.
Создаём файл users.ldif
, в который добавим описание новой группы (ou
– Organizational unit) “users
“:
# cat users.ldif dn: ou=users,dc=sqd_ldp objectClass: top objectClass: organizationalUnit ou: users
# ldapadd -x -D "cn=root,dc=sqd_ldp" -W -f users.ldif Enter LDAP Password: adding new entry "ou=users,dc=sqd_ldp"
Добавим в эту группу запись о пользователе:
# cat testuser.ldif dn: cn=testuser,ou=users,dc=sqd_ldp objectClass: top objectClass: person cn: testuser sn: Vasya Pupkin userPassword: {SSHA}q7LKBDcy0kSFF4FutzEsAsUF/Cb1wJ/Q
# ldapadd -x -D "cn=root,dc=sqd_ldp" -W -f testuser.ldif Enter LDAP Password: adding new entry "cn=testuser,ou=users,dc=sqd_ldp"
Проверим, поискав в базе запись при помощи ldapsearch
:
# ldapsearch -x -LL -b 'dc=sqd_ldp' 'sn=Vasya*' version: 1 dn: cn=testuser,ou=users,dc=sqd_ldp objectClass: top objectClass: person cn: testuser sn: Vasya Pupkin userPassword:: e1NTSEF9cTdMS0JEY3kwa1NGRjRGdXR6RXNBc1VGL0NiMXdKL1E=
Ключи:
-x
: не использовать sasl
;
-LL
: ограничение отображаемой информации, может быть -L
или -LLL
;
-b 'dn'
: искать, начиная с конкретного объекта dn
;
'filter'
: фильтр поиска, можно использовать шаблоны и логические выражения, в данном случае – ищем совпадения по sn
в котором встречается запись о Vasya с любым продолжением.
Для работы с LDAP из консоли существует утилита shelldap
, которая позволяет просматривать каталоги, редактировать записи, сохраняет историю команд и другие удобные вещи:
# cd /usr/ports/net/shelldap && make BATCH=yes install clean
Пример работы в нём:
# shelldap --server localhost ~ > ls -l ou=users,dc=sqd_ldp/ 1 object. ~ > cd ou=users ou=users,~ > ls -l cn=testuser,ou=users,dc=sqd_ldp 1 object. ou=users,~ > cat cn=testuser dn: cn=testuser,ou=users,dc=sqd_ldp objectClass: top objectClass: person cn: testuser sn: Vasya Pupkin userPassword: {SSHA}q7LKBDcy0kSFF4FutzEsAsUF/Cb1wJ/Q ou=users,~ >
Из GUI-утилит имеется JXplorer – написанный на Java LDAP-браузер. Пакеты есть под любые операционные системы – *BSD, Windows, Solaris, Linux и т.д.
Так же, имеется пакет phpLDAPadmin, представляющий из себя веб-интерфейс для работы с LDAP.
Полезные ссылки
http://www.openldap.org
http://www.openldap.org
http://www.openldap.org
http://www.lissyara.su
http://www.computerperformance.co.uk
http://xgu.ru
Крупнейший в рунете сборник документации по LDAP – http://pro-ldap.ru
http://noc.kspu.kr.ua
http://www.secure-computing.net