为什么在将OpenLDAP升级到v2.4后,ldapsearch不能使用匿名绑定?

我有一个我在过去几年使用的OpenLDAP v2.3的设置。 以下是用于访问控制的slapd.conf中的行。

 access to dn.one="o=abc, c=IN" by * read access to dn.base="o=abc, c=IN" by * none 

当我做ldapsearch使用匿名绑定给我的结果。

例如下面的命令给出结果。

 ldapsearch -x -h localhost -b "o=abc,c=IN" 

现在我把操作系统CentOS从5.5升级到了6.3,所以OpenLDAP的版本是OpenLDAP v2.4 。 我们没有改变模式。

但现在相同的ldapsearch给了我result: 32 No such object错误。

但是,当我在访问控制configuration中添加了以下行时,它会起作用

 access to dn.one="o=abc, c=IN" by * read access to dn.base="o=abc, c=IN" by anonymous read by * none 

可能是什么原因? 这样做有没有安全风险?

我在OpenLDAP邮件列表上发布了问题,并得到了答案。 感谢Pierangelo Masarati。

在OpenLDAP v2.4中,search操作需要在search库的“entry”伪属性上具有“search”权限,这在v2.3中并非如此。

男人slapd.access(5):

[…]

search操作需要对searchBase的条目伪属性进行search(= s)特权(注意: 这是在OpenLDAP 2.4中引入的 )。

[…]

所以我不必为基地提供匿名阅读权限。 以下只有search权限才够用。

 access to dn.base="o=abc, c=IN" by anonymous search by * none 

我testing成功了。