[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: ACL for only creating entry



> To Ace Suares:
>
> I tried your last suggestion of:
>
> # Make the user entry writable for WebRegister
> # make the user entry readable for users
> access to dn.regex="uid=(.+),ou=users,dc=theoretic,dc=com" attrs=entry
>   by dn.regex="uid=$1,ou=users,dc=theoretic,dc=com" read
>   by dn.base="uid=webregister,ou=services,dc=theoretic,dc=com" write by
> * none
>
> # Forbid access to the other attributes of individual user entries by #
> WebRegister
> access to dn.regex="uid=(.+),ou=users,dc=theoretic,dc=com"
>   by dn.regex="uid=$1,ou=users,dc=theoretic,dc=com" read
>   by * none
>
> # Grant access to WebRegister to create new users,
> #  even if it can't see them (above ACL)
> access to dn.base="ou=users,dc=example,dc=com" attrs=children
>   by dn.base="uid=webregister,ou=services,dc=theoretic,dc=com" write by
> * none
>
> But it only works as intended if I add the following 4th rule at the
> end, giving webregister write access to the grandparent node of the
> individual users (the parent of the node where users are created).
>
> ## Default to read access.
> access to dn=".*,dc=theoretic,dc=com"
>  by dn="uid=webregister,ou=services,dc=theoretic,dc=com" write
>  by self write

This rule is totally unnecessary.  It has nothing to do with
access to users, i.e entries below "ou=users,dc=theoretic,dc=com.

With the first rule on top you gave webregister write access
only to the "entry" meta-attribute, which is totally meaningless.
How can you expect the entri daya to be written if only access
to this meta-attribute is given?  You need to give full write
access to the entry attributes.  This is why you currently need
this last rule.  Try

access to dn.regex="uid=(.+),ou=users,dc=theoretic,dc=com"
   by dn.exact,expand="uid=$1,ou=users,dc=theoretic,dc=com" read
   by dn.exact="uid=webregister,ou=services,dc=theoretic,dc=com" write
   by * none

access to dn.base="ou=users,dc=example,dc=com" attrs=children
   by dn.base="uid=webregister,ou=services,dc=theoretic,dc=com" write
   by * none

Then webregister will have write access only below the
"ou=users,dc=example,dc=com" subtree.

p.

> I unfortunately can't afford to give webregister this access because
> then some crafty cracker could access info outside of the users (such as
> in my ou=services for non-human login accounts or ou=hosts for domains
> that my box controls). And I only get the intended results by giving
> webregister write acess, so it seems there is something it needs to
> write to not covered by the previous ACLs I can't seem to figure out
> why, though, after messing with it for a few hours.


-- 
Pierangelo Masarati
mailto:pierangelo.masarati@sys-net.it