如果没有 -D rootdn,ldapsearch 将不会输出任何内容

如果没有 -D rootdn,ldapsearch 将不会输出任何内容

我根据官方文档在 Ubuntu 10.04 上安装和设置了 slapd 2.4.21。现在 ldapsearch -x 什么都没有,但 ldapsearch -x -Drootdn -w rootpw 会输出所有内容。我确实有

olcAccess:通过 dn="cn=Manager,dc=a,dc=b" 向 * 写入,通过 * 读取

在后端配置中。出了什么问题?“getent passwd testuser”没有输出任何内容,一定是它造成的。提前谢谢您。

答案1

您必须执行身份验证,olcAccess 用于配置授权。简而言之,slapd 仍然需要您证明自己的身份(身份验证,出于某种奇怪的原因,在 LDAP 俚语中被称为“绑定”),然后才允许您读取数据。

这是正常的。如果您不想每次都提供 -D 和 -w,请使用 ldap.conf 中的相应 bind* 选项,该选项位于不同 unices 的不同位置。Google 表示在 Ubuntu 10.04 上

/etc/ldap/ldap.conf

答案2

尝试查看 slapd 的日志文件,大多数情况下,可以找到“到底发生了什么?”的答案。要读取数据,匿名用户还应该能够读取根 DSE 和“cn=Subschema”。相应的条目如下所示:

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

这些条目应该放在全局配置中,而不是后端。

PS:rootdn 始终具有对后端的写访问权限,因此您无需在 ACL 中指定它

答案3

-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 始终具有所有权限,包括读取、写入。

相关内容