Корневой DSE не возвращен из OpenLDAP

Я пытаюсь настроить сервер OpenLDAP в Ubuntu 9.10, который использует версию 2.4.18 slapd.

После инициализации и заполнения новой базы данных hdb все кажется нормальным, но я не могу заставить сервер вернуть корневой DSE. Бег

ldapsearch -x -W -D 'cn=manager,dc=example,dc=org' \
    -b '' -s base '(objectclass=*)' +

просто возвращается

# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: +
#

# search result
search: 2
result: 0 Success

# numResponses: 1

Мои ACL базы данных hdb настроены следующим образом:

olcAccess: to attrs=userPassword,shadowLastChange
  by self write
  by anonymous auth
  by dn.base="cn=manager,dc=example,dc=org" write
  by * none
olcAccess: to dn.base=""
  by * read
olcAccess: to *
  by self write
  by dn.base="cn=manager,dc=example,dc=org" write
  by * read

Исходя из моего опыта, эта установка должна была вернуть действительный корневой DSE, так что если кто-нибудь мог бы дать мне подсказку о том, что происходит...

4 ответа

Решение

Это на самом деле подано как ошибка #427842 против Ubuntu 9.10 (karmic).

Чтобы исправить это, скопируйте следующее в fixRootDSE.ldif:

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcAccess
olcAccess: to dn.base="" by * read
olcAccess: to dn.base="cn=subschema" by * read

И выполнить

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f fixRootDSE.ldif

Это должно дать анонимный доступ к корневому DSE.

Разве Root DSE не должен запрашиваться анонимно до привязки в качестве пользователя? Так что вам вообще не следует использовать -W или -D.

Мой сервер OpenLDAP отвечает на следующие вопросы:

$ ldapsearch -x -b '' -s base

с

# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#

#
dn:
objectClass: top
objectClass: OpenLDAProotDSE

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Вы можете получить namingContexts использование ldapsearch с использованием необязательных атрибутов (+ флаг)

Тебе нужно

  • -s base
  • -b base
  • необязательные атрибуты + флаг

В целом,

    $ ldapsearch -x -b '' -s base +

Как упомянуто в этом сообщении https://superuser.com/questions/740877/how-do-i-query-the-available-base-dns-in-an-openldap-server

Для тех, кто получит эту ошибку в Apache Directory Studio. Помогла также перезагрузка на студии.

Для тех, кто получит эту ошибку в Apache Directory Studio.

Если вы видите содержимое корневого DSE в других браузерах или в ldapsearch, попробуйте создать новое соединение. Это помогло мне. Я думаю, что это ошибка в Apache DS.

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

# Sample access control policy:
#   Root DSE: allow anyone to read it
#   Subschema (sub)entry DSE: allow anyone to read it
#   Other DSEs:
#       Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
#   Directives needed to implement policy:

access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read

RootDSE должен быть доступен без аутентификации.

Другие вопросы по тегам