Назад | Перейти на главную страницу

Что могло заставить OpenLDAP игнорировать ограничения доступа?

Я пытаюсь настроить новую установку OpenLDAP (2.6.39) в Arch Linux. Я использовал базовые пакеты по умолчанию для его установки и настройки, однако я не могу заставить его подчиняться никаким декларациям контроля доступа в файле настроек.

Мой /etc/openldap/slapd.conf есть только эти два объявления, которые я получил из документов:

access to attr=userPassword
    by self =xw
    by anonymous auth
    by * none

access to *
    by self write
    by users read
    by * none

Я запустил службу в обычном режиме, и, похоже, все работает. Я могу войти в систему с помощью pam / nslcd и использовать phpldapadmin. Однако указанные выше ограничения доступа, похоже, не работают. Из phpldapadmin я смог увидеть и изменить поле пароля для пользователей, отличных от того uid, с которым я подключился. То же самое происходит с клиентом командной строки (вывод обрезан):

$ ldapsearch -D 'uid=user2,ou=People,dc=example,dc=com' -w 1234 '(uid=user1)'
userPassword:: e1NTSEF9VEZ4K2U1M0JtUEU0NkljdlBPaTBycE41RTh2aXJNeTg=

Как видите, я аутентифицируюсь с помощью user2, но могу запросить запись для user1 и увидеть поле пароля.

Другие декларации в slapd.conf явно действуют, поэтому я не редактирую неправильный файл или что-то в этом роде. Я пробовал устанавливать драконовские правила вроде access to * by * none как единственное правило, но я все еще могу видеть что-либо в каталоге от любого пользователя. Я помещаю линии доступа на то место в конфигурации по умолчанию, где были образцы.

Как заставить OpenLDAP действительно учитывать acl в своем файле конфигурации, а не игнорировать их?

Большая часть конфигурации OpenLDAP (включая ACL) действительно принадлежит cn=config поддерево конфигурации. Возможно, у вас есть что-то, что отменяет ваши утверждения в slapd.conf. Видеть эта документация чтобы прочитать о современном способе настройки вашего LDAP-сервера.

В качестве переходной меры Arch Linux пакеты для OpenLDAP приходите с slapd.conf файл, но если вы следуете инструкции на их вики в конце раздела настройки вы найдете, что вы автоматически конвертируете его в новый формат.

Примечание. В OpenLDAP 2.4 конфигурация slapd.config устарела. Начиная с этой версии, все параметры конфигурации хранятся в /etc/openldap/slapd.d/.

Чтобы сохранить последние изменения в slapd.conf новых настроек конфигурации slapd-config, мы должны сначала удалить старые файлы конфигурации:

# rm -rf /etc/openldap/slapd.d/*

Затем мы генерируем новую конфигурацию с помощью:

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

Эту последнюю команду нужно запускать каждый раз, когда вы меняете slapd.conf.

Обратите особое внимание на строку в конце. Если вы решите вносить будущие изменения конфигурации в старый формат, вам нужно будет каждый раз их преобразовывать.