我正在尝试执行以下操作:我有 openldap 2.4.45 服务器(测试),其中包含如下用户和组:
o=Example(dc=example,dc=com)
ou=users
uid=alice
uid=bob
PublicKey="...."
ou=Groups
cn=group1
cn=group2
我需要将应用程序连接到此服务器。DIT 中的某些用户有一个公钥(例如 bob),我希望匿名绑定能够获取任何用户的公钥(如果它确切知道 DN)(例如 dn:uid=bob,ou=users,dc=example,dc=com),但我不希望匿名绑定能够读取其他属性
我尝试做以下事情
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to attrs=PublicKey by * read stop
olcAccess: {3}to * by * none
但是当我尝试这个请求时
ldapsearch -x -b "dc=example,dc=com" -LLL '(&(objectClass=posixAccount)(uid='"bob"'))' 'PublicKey'
我得到一个“没有这样的对象(32)”,但如果我允许*通过*读取访问,我就会得到用户bob的公钥。
我怎样才能实现这个目标?
答案1
你必须
- 至少授予
search
搜索根条目的权限dc=example,dc=com
- 授予
read
伪属性权限入口包含该属性的条目公钥