Hi,
On Sat, Sep 4, 2010 at 1:33 AM, Rich Megginson <rmeggins(a)redhat.com> wrote:
> ou=UnitA, dc=example, dc=com
> uid=adminA, ou=UnitA, dc=example, dc=com (member of Admin group)
> uid=userA1, ou=UnitA, dc=example, dc=com
> uid=userA2, ou=UnitA, dc=example, dc=com
> uid=userA3, ou=UnitA, dc=example, dc=com
> ou=UnitB, dc=example, dc=com
> uid=adminB, ou=UnitB, dc=example, dc=com (member of Admin group)
> uid=userB1, ou=UnitB, dc=example, dc=com
>
> The idea is that admin could change anything (modify/add/remove
> attributes) under his 'ou' i.e. adminA has full access to all DNs
> under ou=UnitA, dc=example, dc=com but no access to ou=UnitB
>
> I tried the following ACI:
> (target="ldap:///($dn)) (targetattr = "*")
> (version 3.0; acl "Administrator access"; allow (all)
> roledn="ldap:///cn=Administrator,dc=example,dc=com";)
>
> But AdminA could change anything under ou=UnitB. Any ideas how to
> fix/change ACI?
I don't think that ACI will work - a macro ACI requires the use of ($dn) or
[$dn] in both the target and the bind rule.
Ops, I missed that part that ($dn) requires [$dn] in docs!
I changed ACI to:
(target="ldap:///($dn)") (targetattr = "*")
(version 3.0; acl "Allow Admin to create users"; allow (add,all)
roledn="ldap:///cn=Admin,[$dn]";)
which works great. Second changed is that each 'ou' has own admin:
ou=UnitA,dc=example,dc=com
cn=admin,ou=UnitA,dc=example,dc=com
uid=adminA,ou=UnitA,dc=example,dc=com (member of
cn=admin,ou=UnitA,dc=example,dc=com)
...
ou=UnitB,dc=example,dc=com
cn=admin,ou=UnitA,dc=example,dc=com
uid=adminB,ou=UnitA,dc=example,dc=com (member of
cn=admin,ou=UnitA,dc=example,dc=com)
...
Thanks,
--
Ondrej Ivanic
(ondrej.ivanic(a)gmail.com)