Я пытаюсь настроить новую установку 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.
Обратите особое внимание на строку в конце. Если вы решите вносить будущие изменения конфигурации в старый формат, вам нужно будет каждый раз их преобразовывать.