OpenLDAP 未返回任何 Root DSE

OpenLDAP 未返回任何 Root DSE

我正在尝试在 ubuntu 9.10 上设置一个 OpenLDAP 服务器,它使用 slapd 版本 2.4.18。

初始化并填充新的 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

我的 hdb 数据库 ACL 设置如下:

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,所以如果有人可以告诉我发生了什么事情......

答案1

在绑定为用户之前,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

答案2

这实际上被归类为 bug#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 的匿名访问权限。

答案3

您可以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

答案4

对于那些在 Apache Directory Studio 中遇到此错误的人来说,重新启动工作室也会有所帮助。

相关内容