LDAP olcAccess 正则表达式未按预期工作
LDAP olcAccess regex are not working as expected
我有一个运行结构如下的 LDAP 服务器:
dc=example,dc=ldap
dc=organisations
o=orga1 (objectClasses top/organisation/dcObject)
cn=ADMINS (objectClasses top/groupOfNames)
cn=USER
o=orga2
cn=ADMIN
cn=USER
cn=users (objectClasses top/organisation/dcObject)
cn=user1 (objectClasses top/person)
cn=user2
现在我想添加一些规则,只有组织组中的用户才能看到该组织。
硬编码方法很容易实现:
olcAccess: {1}to dn.subtree="o=orga1,dc=organizations,dc=example,dc=ldap"
by group.exact="cn=ADMINS,o=orga1,dc=organizations,dc=example,dc=ldap" write
by group.exact="cn=USER,o=orga1,dc=organizations,dc=example,dc=ldap" read
by * none
(重要的是在'by'前面写两个空格[这个问题困扰了我很久])
但我不想为每个新组织实施这些规则,因此我尝试使用一些正则表达式魔术来实施该规则。但是我惨败了:
olcAccess: {1}to dn.regex="^o(.+),dc=organizations,dc=example,dc=ldap$"
attrs=children
by group.exact="cn=ADMINS,o=[],dc=organizations,dc=example,dc=ldap$" write
by group.exact="cn=USER,o=[],dc=organizations,dc=example,dc=ldap$" read
by * none
这条规则没有任何影响。
那么有人有办法解决我的问题吗?
还是不能像我一样对成员进行分组?
再次感谢
在邮件列表中,我得到提示 group.exact 没有进行正则表达式评估。
作为解决方法,我创建了自己的带有属性的 objectClass
"orgaMember" 和 "orgaAdmin" 现在可以根据这些属性创建 olcAccess 规则。要将此规则应用于所有组织,可以使用正则表达式。
olcAccess: {1}to dn.regex="^o=(.+),dc=organizations,dc=example,dc=ldap$"
by dnattr=orgaAdmin write
by dnattr=orgaMember read
by * none
我希望这会对某人有所帮助。
PS。要更新对象类,需要注意很多事情。
见 http://www.zytrax.com/books/ldap/ch6/slapd-config.html
我有一个运行结构如下的 LDAP 服务器:
dc=example,dc=ldap
dc=organisations
o=orga1 (objectClasses top/organisation/dcObject)
cn=ADMINS (objectClasses top/groupOfNames)
cn=USER
o=orga2
cn=ADMIN
cn=USER
cn=users (objectClasses top/organisation/dcObject)
cn=user1 (objectClasses top/person)
cn=user2
现在我想添加一些规则,只有组织组中的用户才能看到该组织。
硬编码方法很容易实现:
olcAccess: {1}to dn.subtree="o=orga1,dc=organizations,dc=example,dc=ldap"
by group.exact="cn=ADMINS,o=orga1,dc=organizations,dc=example,dc=ldap" write
by group.exact="cn=USER,o=orga1,dc=organizations,dc=example,dc=ldap" read
by * none
(重要的是在'by'前面写两个空格[这个问题困扰了我很久])
但我不想为每个新组织实施这些规则,因此我尝试使用一些正则表达式魔术来实施该规则。但是我惨败了:
olcAccess: {1}to dn.regex="^o(.+),dc=organizations,dc=example,dc=ldap$"
attrs=children
by group.exact="cn=ADMINS,o=[],dc=organizations,dc=example,dc=ldap$" write
by group.exact="cn=USER,o=[],dc=organizations,dc=example,dc=ldap$" read
by * none
这条规则没有任何影响。 那么有人有办法解决我的问题吗?
还是不能像我一样对成员进行分组?
再次感谢
在邮件列表中,我得到提示 group.exact 没有进行正则表达式评估。
作为解决方法,我创建了自己的带有属性的 objectClass "orgaMember" 和 "orgaAdmin" 现在可以根据这些属性创建 olcAccess 规则。要将此规则应用于所有组织,可以使用正则表达式。
olcAccess: {1}to dn.regex="^o=(.+),dc=organizations,dc=example,dc=ldap$"
by dnattr=orgaAdmin write
by dnattr=orgaMember read
by * none
我希望这会对某人有所帮助。
PS。要更新对象类,需要注意很多事情。 见 http://www.zytrax.com/books/ldap/ch6/slapd-config.html