J'essaie donc d'ajouter quelques ACI à mon système OpenLDAP (hébergé sous CentOS 6). J'ai lu comment d'autres mettent leurs ACI dans bdb comme ceci...
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=manager,dc=bromosapien,dc=net" write by anonymous auth by self write by \* none
olcAccess: to dn.base="" by \* read
olcAccess: to \* by dn="cn=manager,dc=bromosapien,dc=net" write by \* read
Cependant, je veux éviter cela et permettre aux changements de mot de passe de se faire à partir d'un conteneur (et au moins éviter d'utiliser le gestionnaire de répertoire). J'ai lu que quelqu'un faisait cela et que cela fonctionnait de son point de vue :
dn: ou=People,dc=bromosapien,dc=net
changetype: modify
add: aci
aci: (targetattr = "userpassword || telephonenumber")(version 3.0; acl "Allow self entry modification"; allow (write)(userdn = "ldap:///self");)
Le problème est que, en essayant de l'ajouter, j'obtiens ceci.
\# ldapadd -xWD "cn=manager,dc=bromosapien,dc=net" -f aci-password.ldif
Enter LDAP Password:
modifying entry "ou=People,dc=bromosapien,dc=net"
ldap\_modify: Undefined attribute type (17)
additional info: aci: attribute type undefined
Je dois faire quelque chose de mal ou mentionner une mauvaise classe d'objets, etc. La question est la suivante : dois-je vraiment tout faire dans bdb.ldif ou est-il possible d'ajouter des ACI de cette façon et quelle que soit la méthode "recommandée" dans ce cas, quelle est la meilleure façon de fournir les ACI dont j'ai besoin pour permettre à un utilisateur de changer son propre mot de passe (sans avoir besoin du gestionnaire de répertoire) ?
Edit : J'ai aussi remarqué qu'avec les lignes olcAccess, ldapsearch ne montre pas la ligne userPassword d'une recherche anonyme.