Вы здесь

Общие настройки OpenLDAP

Пути к файлам, использованные на этой странице, относятся к дистрибутивам Linux CentOS 6/7.

Основные файлы конфигурации

/etc/openldap/slapd.conf

Конфигурация LDAP-сервера slapd. Содержимое файла для запуска slapd в режиме прокси описано в статье"OpenLDAP в режиме прокси для Active Directory".

/etc/openldap/ldap.conf

Базовая конфигурация клиентов из пакета OpenLDAP (ldapsearch, ldapwhoami, slapd в режиме прокси). Параметры из этого файла могут быть перезаписаны в командной строке. Этот файл не влияет на демон nslcd - у того свои настройки LDAP в /etc/nslcd.conf.

/etc/nslcd.conf

Конфигурация демона nslcd, который обеспечивает доступ к LDAP кэширующему серверу имен nscd. Конфигурационный файл описан в разделе "Имена пользователей и групп из LDAP (nslcd)".

Создание баз slapd

Используется два основных каталога для хранения баз /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

Целостность баз slapd

Для обеспечения целостности баз соответствующая библиотека ведёт логи транзакций, которые позволяют восстановить базу в случае сбоя на диске или аварийного отключения питания. Логи транзакций накапливаются в каталоге /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

Для отладки 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=*)' '*' '+'

Пример использования ldapsearch

Для отладки можно формировать запросы к 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))'`
Яндекс.Метрика