Hi everyone! For compatibility reasons I had to change the way I store my user's password in LDAP from SSHA to plaintext and now I want to try to restrict the access to some attributes while I find a better solution. My ldap tree is something like this: dc=domain,dc=com cn=freeradius cn=diradmin cn=readonly cn=user1 o=company1 cn=admins_company1 (member: uid=user1 and uid=user6) ou=users uid=user1 uid=user2 ou=groups cn=company1_group1 cn=company1_group2 o=company2 cn=admins_company2 ou=users uid=user3 uid=user4 ou=groups cn=company2_group1 cn=company2_group2 o=company3 cn=admins_company3 ou=users uid=user5 uid=user6 ou=groups cn=company2_group1 cn=company2_group2 o=user1subtree ou=users uid=user15 uid=user62 ou=groups cn=group1 cn=group2 HERE THE PERMISSION I WANT TO GRANT all the users can modify their own attributes user cn=freeradius is used by freeradius to auth the users on the 802.11x wi-fi. It should read all the tree including the userPassword attribute user cn=diradmin is the rootdn cn=readonly can read the whole tree but not the userPassword attribute cn=user1 can read the whole directory (not the userPassword attribute) and write in his own subtree (o=user1subtree) uid=user1 and uid=user6 are company1's administrators, so they can write in whole o=company1 subtree the number of companies changes often and so I can't statically define an ACL for accessing a subtree I wrote the following ACL (but is the first time) are them correct or I'm missing something? The regex is expensive (any search in the tree takes a lot of time) but works, how can I optimize it? {0}to attrs=userPassword by self =xw by dn="cn=freeradius,dc=domain,dc=com" read by anonymous auth by * none {1}to attrs=shadowLastChange by self write by * read {2}to dn.subtree="o=user1subtree,dc=domain,dc=com" by dn="cn=user1,dc=domain,dc=com" write {3}to dn.regex="o=(.+),dc=domain,dc=com$" by group.expand="cn=admins_$1,o=$1,dc=domain,dc=com" write by dn="cn=user1,dc=domain,dc=com" read by dn="cn=freeradius,dc=domain,dc=com" read by self write {4}to * by dn="cn=user1,dc=domain,dc=com" read by dn="cn=freeradius,dc=domain,dc=com" read by * read by self write by anonymous auth Thanks! -- Alberto Aldrigo |