2015-07-29 1 views
1

J'ai un serveur LDAP runnign avec la structure:regex LDAP olcAccess ne fonctionnent pas comme prévu

dc=example,dc=ldap 
    dc=organisations 
     o=orga1 (objectClasses top/organisation/dcObject) 
     cn=ADMINS (objectClasses top/groupOfNames) 
     cn=USER 
     o=orga2 
     cn=ADMIN 
     cn=USER 
     cn=users (objectClasses top/organisation/dcObject) 
     cn=user1 (objectClasses top/person) 
     cn=user2 

Maintenant, je whant d'ajouter des règles que seuls les utilisateurs des groupes d'organisation sont en mesure de voir l'organisation.

l'approche codée en dur était assez facile à mettre en œuvre:

olcAccess: {1}to dn.subtree="o=orga1,dc=organizations,dc=example,dc=ldap" 
    by group.exact="cn=ADMINS,o=orga1,dc=organizations,dc=example,dc=ldap" write 
    by group.exact="cn=USER,o=orga1,dc=organizations,dc=example,dc=ldap" read 
    by * none 

(Il est important d'écrire deux places devant la « par » [C'était un problème depuis longtemps pour moi])

Mais je ne veux pas implémenter ces règles pour chaque nouvelle organisation, j'ai donc essayé d'implémenter la règle avec un peu de regex magig. Mais j'ai échoué de manière incorrecte:

olcAccess: {1}to dn.regex="^o(.+),dc=organizations,dc=example,dc=ldap$" 
    attrs=children 
    by group.exact="cn=ADMINS,o=[$1],dc=organizations,dc=example,dc=ldap$" write 
    by group.exact="cn=USER,o=[$1],dc=organizations,dc=example,dc=ldap$" read 
    by * none 

Cette règle n'affecte rien. Alors, est-ce que quelqu'un a une idée pour résoudre ma problématique?

Ou n'est-il pas possible de regrouper les membres comme je l'ai fait?

Merci encore

Répondre

0

Au cours de la liste de diffusion que j'ai le soupçon que group.exact, ne fait pas l'évaluation regex. En tant que workarround, j'ai créé mon propre objectClass avec les attributs "orgaMember" et "orgaAdmin" maintenant il est possible de créer une règle olcAccess basée sur ces attributs. Pour appliquer cette règle à toutes les organisations, une expression régulière peut être utilisée.

olcAccess: {1}to dn.regex="^o=(.+),dc=organizations,dc=example,dc=ldap$" 
by dnattr=orgaAdmin write 
by dnattr=orgaMember read 
by * none 

J'espère que cela aidera quelqu'un.

PS. pour mettre à jour l'objectClasses, beaucoup de choses doivent être remarquées. voir http://www.zytrax.com/books/ldap/ch6/slapd-config.html