Моя установка и настройка slapd 2.4.21 выполняется на Ubuntu 10.04 в соответствии с официальным документом. Теперь ldapsearch -x ничего мне не даст, но ldapsearch -x -Drootdn -w rootpw выведет все. я должен
olcAccess: to * by dn = "cn = Manager, dc = a, dc = b" запись через * чтение
в конфигурации бэкэнда. В чем дело? "getent passwd testuser" ничего не выводит, должно быть из-за этого. Заранее спасибо.
Вы должны выполнить аутентификацию, а olcAccess предназначен для настройки авторизации. Проще говоря, slapd по-прежнему требует от вас подтверждения того, кто вы есть (аутентификации, что на сленге LDAP по какой-то странной причине называется "привязкой"), прежде чем вы сможете читать данные.
Это нормально. Если вы не хотите указывать -D и -w каждый раз, используйте соответствующие параметры bind * в ldap.conf, который находится в разных местах в разных юнионах. Google говорит, что в Ubuntu 10.04 это
/etc/ldap/ldap.conf
Попробуйте заглянуть в лог-файл slapd, в большинстве случаев ответ на "wtf происходит?" здесь. Для чтения данных анонимный пользователь также должен иметь возможность читать корневую DSE и "cn = Subschema". Соответствующие записи выглядят так:
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
Эти записи должны быть помещены в глобальную конфигурацию, а не в серверную часть.
P.S .: rootdn всегда имеет доступ на запись к бэкэнду, поэтому вам не нужно указывать его в ACL
-Drootdn -w rootpw
-D / -w используется для привязки dn с последующим поиском в дереве LDAP аутентифицированного пользователя. Убедитесь, что для вашего OpenLDAP разрешена анонимная привязка.
Если вы используете slapd.conf для настройки сервера, вы можете использовать этот параметр в slapd.conf:
allow bind_anon_cred
И ниже параметр используется для отключения анонимной привязки:
disallow bind_anon
Кроме того, настройка ниже вообще не работает:
olcAccess: to * by dn="cn=Manager,dc=a,dc=b" write by * read
Потому что root dn всегда имеет ВСЕ привилегии, включая чтение и запись.