我有一个我在过去几年使用的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成功了。