OpenLDAP ACL顺序

时间:2013-04-17 16:52:09

标签: acl openldap

我在slapd.conf文件中有3个ACL。

1. access to attrs=userPassword
    filter="(&(objectClass=customAttributes)(!(statusCode=A)))"
    by * none

2. access to attrs=userPassword
    filter="(&(objectClass=customAttributes)(statusCode=A))"
    by self =wx
    by * =x

3. access to dn.subtree="dc=mycompany,dc=com"
    by self write
    by group.exact="cn=administrators,dc=mycompany,dc=com" write
    by group.exact="cn=applications,dc=mycompany,dc=com" read
    by * auth

ACL 1和2的目的是禁用状态代码不是A的任何用户。它工作正常。 ACL 3的目的是使memberadministrators为管理员,memberapplications组具有只读访问权限。其他人都必须进行身份验证。

如果我按照上面的顺序拥有ACL,那么对于ACL 3,我无法使用管理员帐户读取/编辑任何用户的userPassword字段。如果我在1和2之前有ACL 3,则ACL 1和2不起作用。

我需要遵循ACL的特定顺序吗?这3个ACL可以合并到一个ACL中吗?

1 个答案:

答案 0 :(得分:0)

我必须按如下方式更改ACL 2

2. access to attrs=userPassword
    filter="(&(objectClass=customAttributes)(statusCode=A))"
    by self =wx
    by group.exact="cn=administrators,dc=mycompany,dc=com" write
    by * =x

原因:早期的ACL 3未执行,因为我已经在ACL 2(by * =x)中拥有其他所有权限。