Quoting Sven Mäder <maeder(a)phys.ethz.ch>:
Thank you very much for this!
In our case we need access to dn.subtree I believe because admins are
supposed to have full control, ie. add and delete accounts.
What stopped me was the lack of documentation for the "control"
keyword but after a bit of sleep and reading your answer I found a
some deep down in the Faq-O-Matic bit it does not seem to cover all of
it.
So, as I gather, "by * none" is the default processing stops,
"by * continue" makes it possible to add rules to the same object and
"by * break" resets the processong?
And finally, there seems to be additional switches available for the
control processing but I cannot find them documented *anywhere*.
Thanks again,
//per
> Hi
>
> You could insert something like this:
>
> to dn.exact="ou=somedomain,dc=example,dc=com"
> attrs=children
> by group="cn=admingroup,ou=ldap,dc=example,dc=com" write stop
> by * break
> to dn.children="ou=somedomain,dc=example,dc=com"
> attrs=@inetOrgPerson,@organizationalUnit,@posixAccount,
> @shadowAccount,entry
> by group="cn=admingroup,ou=ldap,dc=example,dc=com" write stop
> by * break
>
> This will grant administrative rights by the specified group to:
>
> - the "children" attr of the entry: ou=somedomain,dc=example,dc=com
> - all attrs of children of: ou=somedomain,dc=example,dc=com in the
> specified objectClasses plus the entries itself
> - all other users/groups will continue with ACL evaluation (by * break)
>
> This will prevent modifying the entry: ou=somedomain,dc=example,dc=com
> If you do not need that, replace the two ACLs with:
>
> to dn.subtree=ou=somedomain,dc=example,dc=com"
> ...
>
> But you have to add these ACLs before the rule with:
> to attrs=userPassword ...
> otherwise if you add it at the end, the "by * none" will prevent all
> access.
>
> ou=ldap is just an ou that contains my slapd admin groups, for example:
>
> dn: ou=ldap,dc=example,dc=com
> objectClass: organizationalUnit
> ou: ldap
>
> dn: cn=admingroup,ou=ldap,dc=example,dc=com
> objectClass: groupOfNames
> member: uid=someuser,ou=somedomain,dc=example,dc=com
> cn: admingroup
>
> Hope that helps a bit with the bleeding :)
> And carefully test your ACLs, I had to do a lot of try and error to
> get it right.
>
> Kind regards
> Sven
>
> On 03/18/2018 04:54 PM, Lists Nethead wrote:
>>
>> Hi all,
>>
>> First post here, and it is asking for advice on an access rule. Setup is,
>>
>> +-dc=example,dc=com
>> +--ou=somedomain
>> +---uid=someuser,ou=somedomain,dc=example,dc=com
>> +--ou=someotherdomain
>> +---uid=otheruser,ou=someotherdomain,dc=example,dc=com
>> +--ou=yetanotherdomain
>>
>> The ruleset so far that seems to work is
>>
>> to dn.base="" by * read
>> to dn.base="cn=subschema" by * read
>> to attrs=userPassword by dn.base="cn=admin,dc=example,dc=com"
>> write by
>> dn.base="uid=otheradmin,ou=System,dc=example,dc=com" write by self
>> write by anonymous auth by * none
>> to * by dn.base="uid=someadmin,ou=System,dc=example,dc=com" w
>> rite by self read by
>> peername.ip=<address>%255.255.255.0 read by peern
>> ame.ip=<address>%255.255.255.0 read by peername.ip=<address>%255.255.2
>> 55.0 read by users tls_ssf=256 read by * none
>>
>> What I want next is that
>> "uid=someuser,ou=somedomain,dc=example,dc=com" should be able to
>> administer accounts in "ou=somedomain" and likewise for other "ou=".
>>
>> My guess is that a group with admin accounts is the way to go but
>> right now my eyes are bleeding after reading the whole day about
>> access rules...
>>
>> Thanks,
>>
>> //per
>>
>>