根据官方文档,我在Ubuntu 10.04上安装和设置slapd 2.4.21。 现在ldapsearch -x将不会给我任何东西,但ldapsearch -x -Drootdn -w rootpw将输出所有内容。 我有
olcAccess:to * by dn =“cn = Manager,dc = a,dc = b”通过* read写入
在后端configuration中。 怎么了? “getent passwd testuser”输出什么都不是,一定是由于它。 先谢谢你。
您必须执行身份validation,而olcAccess则用于configuration授权。 简而言之,slapd仍然要求你在允许你读取数据之前certificate你是谁(在LDAP俚语中被认为是“绑定”,出于某种奇怪的原因)。
这个是正常的。 如果你不想每次都提供-D和-w,在ldap.conf中使用相应的bind *选项,它位于各个unices的不同位置。 谷歌在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
这些条目应该放在全局configuration中,而不是放在后端。
PS:rootdn总是有对后端的写权限,所以你不需要在ACL中指定它
-Drootdn -w rootpw
-D / -w用于绑定dn,然后将LDAP树作为已authentication的用户进行search。 请确保您的OpenLDAP允许匿名绑定。
如果您使用slapd.conf进行服务器configuration,则可以在slapd.conf中使用此设置:
allow bind_anon_cred
下面的设置是用来禁用匿名绑定:
disallow bind_anon
而且,下面的设置根本不起作用:
olcAccess: to * by dn="cn=Manager,dc=a,dc=b" write by * read
因为root dn总是拥有ALL权限,包括读,写。