Dans un annuaire LDAP (slapd, OpenLDAP), on peut attribuer des droits différents à plusieurs utilisateurs.
On peut octroyer des droits de lecture et / ou d'écriture sur toute l'arborescence ou sur une partie (une ou plusieurs branche / unité organisationnelle) :
dn: olcDatabase={1}mdb,cn=config
changetype: modify
delete: olcAccess
-
add: olcAccess
olcAccess: {0}to dn.subtree="ou=test,dc=exemple,dc=net" by dn="cn=test,ou=ldap,dc=exemple,dc=net" write by dn="cn=admin,ou=ldap,dc=exemple,dc=net" write by * none
-
[ autres règles ici ]
-
add: olcAccess
olcAccess: {1}to * by dn="cn=admin,ou=ldap,dc=exemple,dc=net" write by * none
Dans cet exemple, l'utilisateur « cn=test,ou=ldap,dc=exemple,dc=net » pourra ajouter des objets dans la branche « ou=test,dc=exemple,dc=net », modifier et supprimer tout objet existant dans cette branche.
On peut aussi octroyer des droits de lecture et / ou d'écriture sur des attributs précis sur tous les objets de toutes les branches (sauf règle contraire ;)) : olcAccess: to attrs=attr1,attr2,attr2,attr3 […]
. Il n'est pas possible d'utiliser un joker. Exemple : il n'est pas possible d'écrire « attrs=person* » dans l'intention d'accorder des droits sur tous les attributs dont le nom commence par « person ». Attention : avec le droit d'écriture, il sera possible d'ajouter et de supprimer des attributs sur des objets sur lesquels l'utilisateur n'a pas les droits d'écriture. Même chose avec les droits de lecture : il sera possible de lire uniquement ces attributs-là sur un objet sur lequel l'utilisateur n'a pas de droits plus larges.
Dans la continuité du point précédent, il est possible d'octroyer des droits pour tous les attributs d'une classe. olcAccess: to attrs=@maClasse […]
. Toutes les remarques précédentes s'appliquent aussi ici.
Attention : lorsque l'on octroie des droits "fins" (sur des branches, des attributs, etc.), il faut spécifier les droits des autres utilisateurs. Exemple : si, dans le premier exemple ci-dessus, dans la première règle, je ne précise pas que l'utilisateur « cn=admin,ou=ldap,dc=exemple,dc=net » a aussi des droits sur cette branche, il aura aucun droit, la deuxième règle ne s'appliquant pas.