Пути к файлам, использованные на этой странице, относятся к дистрибутивам Linux CentOS 6/7.
Конфигурация LDAP-сервера slapd
. Содержимое файла для запуска slapd
в режиме прокси описано в статье"OpenLDAP в режиме прокси для Active Directory".
Базовая конфигурация клиентов из пакета OpenLDAP (ldapsearch
, ldapwhoami
, slapd
в режиме прокси). Параметры из этого файла могут быть перезаписаны в командной строке. Этот файл не влияет на демон nslcd
- у того свои настройки LDAP в /etc/nslcd.conf
.
Конфигурация демона nslcd
, который обеспечивает доступ к LDAP кэширующему серверу имен nscd
. Конфигурационный файл описан в разделе "Имена пользователей и групп из LDAP (nslcd)".
Используется два основных каталога для хранения баз /etc/openldap/slapd.d
и /var/lib/ldap
. Первый каталог используется для хранения конфигурации в виде базы database config
. Второй - для хранения локальной базы записей LDAP или (в режиме прокси) для хранения кэша модулем pcache
. В каталоге /var/lib/ldap
для корректного создания базы должен находиться файл DB_CONFIG
.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
Конфигурация slapd
может храниться в двух форматах: в файле /etc/openldap/slapd.conf
и в каталоге /etc/openldap/slapd.d
. Конфигурация из каталога имеет больший приоритет, поэтому при изменениях файла /etc/openldap/slapd.conf
надо удалить базу /etc/openldap/slapd.d
и сгенерировать ее заново:
sudo rm -rf /etc/openldap/slapd.d/*; sudo -u ldap slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d -v -d -1
slaptest
проверяет синтаксис slapd.conf
, строит базу config
в /etc/openldap/slapd.d
и пытается создать bdb/hdb базы (если они описаны в slapd.conf
) в /var/lib/ldap
. Опция -d -1 - обеспечивает выдачу отладочной информации, что бывает полезно для поиска ошибок в файле конфигурации.
Иногда при генерации баз в /var/lib/ldap
slaptest
выдает ошибку:
Checking configuration files for : bdb_db_open:
db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2)
В этом случае имеет смысл один раз запустить slapd
от root'а (с опцией отладки, чтобы он не ушел в фоновый режим), а потом поменять владельца сгенерированых файлов.
slapd -d -1; chown -R ldap:ldap /var/lib/ldap
Для обеспечения целостности баз соответствующая библиотека ведёт логи транзакций, которые позволяют восстановить базу в случае сбоя на диске или аварийного отключения питания. Логи транзакций накапливаются в каталоге /var/lib/ldap/
с именами вида log.0000000001
, log.0000000002
и т.д.
Для кеширующего прокси целостность баз не имеет значения, поэтому сохранение логов транзакций можно отключить, добавив в файл /var/lib/ldap/DB_CONFIG
строку set_flags DB_LOG_AUTOREMOVE
Для записи логовов slapd
в конфигурационный файл syslog/rsyslog необходимо добавить правило
local4.* /var/log/ldap.log
Для отладки slapd
запускается с опцией -d N
, где N
- число, каждый бит которого включает определенный тип отладочной печати. При запуске с опцией отладки slapd
не уходит в фоновый режим и выдает отладочную печать на stderr
. slapd -d -1
включает вывод всей доступной отладочной печати. Запуск slapd с опцией -d \?
выдает список допустимых значений отладочных режимов и мнемонические обозначения для них. В зависимости от подключенных модулей-оверлеев, список отладочных режимов может меняться. В частности, модуль pcache
добавляет свой отладочный флаг. При запуске slapd -d pcache
выдается предупреждение, что используется неверный флаг отладки, но работает как надо.
Если есть желание отлаживать slapd
, запущенный в фоновом режиме, то вместо опции -d
следует использовать -s
- запись в syslog
.
Список битов, используемых с опциями -d
и -s
Any (-1, 0xffffffff)
Trace (1, 0x1)
Packets (2, 0x2)
Args (4, 0x4)
Conns (8, 0x8)
BER (16, 0x10)
Filter (32, 0x20)
Config (64, 0x40)
ACL (128, 0x80)
Stats (256, 0x100)
Stats2 (512, 0x200)
Shell (1024, 0x400)
Parse (2048, 0x800)
Sync (16384, 0x4000)
None (32768, 0x8000)
pcache (4096, 0x1000)
В slapd.conf включаем монитор и разрешаем доступ локальному root'у
database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by * none
Просмотр данных
#Просмотр разделов, доступных для опроса
ldapsearch -Y EXTERNAL -H ldapi:/// -b 'cn=Monitor'
#Просмотр конкретного раздела
ldapsearch -Y EXTERNAL -H ldapi:/// -b 'cn=Statistics,cn=Monitor' -s base '(objectClass=*)' '*' '+'
Для отладки можно формировать запросы к LDAP-серверу командой ldapsearch
. Например:
ldapsearch -H ldap://localhost/ -x -b "dc=example,dc=com" -LLL '(sAMAccountName=testuser)'
Тестирование запроса nslcd:
ldapsearch -H ldap://localhost/ -x -b "ou=People,dc=example,dc=com" \
-LLL '(&(&(&(&(objectClass=user)(!(objectClass=computer)))(uidNumber=*)) \
(unixHomeDirectory=*))(sAMAccountName=testuser))'`