Le contenu de cette arborescence est aussi stocké sous forme de fichiers, dans le répertoire `/etc/ldap/slapd.d/` et ceux-ci sont chargés au démarrage de OpenLDAP.
À savoir : lorsqu'on modifie à chaud la configuration, OpenLDAP met alors immédiatement à jour le contenu du fichier correspondant dans `/etc/ldap/slapd.d/` !
Une autre possibilité est de stopper **slapd**, de modifier les fichiers LDIF dans _/etc/ldap/slapd.d/_ et de le redémarrer.
Attention, cela risque de générer des warnings à propos de checksums sur les fichiers. Pour contourner cela, il faut ré-éditer les entrées à chaud pour que les dumps soient regénérés avec les bons checksums...
adding new entry "cn={4}amavis,cn=schema,cn=config"
~~~
Note : Si besoin, on peut bien sûr convertir plusieurs schémas d'un coup via un fichier _/tmp/convert-to-ldap.conf_ du type :
~~~
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
[...]
include /etc/ldap/schema/monschema2.schema
~~~
### Gestion des ACL
Les ACL s'ajoutent via des règles du type :
~~~
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=example,dc=com" write by peername.ip="127.0.0.1" read by * none
~~~
/!\ en cas de réplication, bien penser à inclure l'utilisateur de réplication pour les attrs=userPassword,shadowLastChange sous peine
de ne pas avoir de synchronisation des mots de passe !!!
Pour ne pas avoir un annuaire lisible publiquement mais accessible depuis l'extérieur, on peut forcer l'authentification en remplaçant "by peername.ip="127.0.0.1" read" par :
~~~
by users read by anonymous auth
~~~
### Réplication (master->slave)
*Sur le master :*
* Ajouter le module syncprov (dans l'objet cn=module{0},cn=config) :
Suite à cette mise en place, si en tentant de se connecter au serveur apparaît l'erreur `ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)`, il se peut que ça soit dû au certificat non reconnu. Pour désactiver la vérification du certificat, sur le client, ajouter cette ligne dans _/etc/ldap/ldap.conf_ :
~~~
TLS_REQCERT never
~~~
## Utilisation
### ldapvi
_ldapvi_ permet d'éditer un annuaire LDAP avec Vim.
C'est dû au fait que vous avez modifié "à froid" la configuration dans /etc/ldap/slapd.d/ ; cela ne pose pas de problème si vous le faites bien lorsque _slapd_ est arrêté, mais cela génère ces warnings. En effet, lorsqu'une entrée est modifiée "à chaud" (via ldapvi par exemple), l'entrée est dumpée dans un fichier dans /etc/ldap/slapd.d/ et un checksum est généré. Pour contourner ce problème, il vous suffit de faire une modification à chaud de l'entrée (même inutile) afin qu'un dump soit regénéré avec son checksum correspondant.
Vérifiez que l'utilisation _openldap_ a bien accès aux clés privés et certificats définis dans sa configuration (vous pouvez utiliser `sudo -u openldap /bin/bash` pour vous en assurer).
### ldif_read_file: checksum error
Si vous avez modifié des fichiers dans le répertoire `/etc/ldap/slapd.d/cn=config/` (à ne pas faire lorsque **slapd** tourne), il vous faudra regenérer le checksum du fichier modifié :
La limite par défaut lors d'un ldapseach est de 500. On peut l'augmenter en modifiant l'attribut olcSizeLimit, avec par exemple `ldapvi -Y EXTERNAL -h ldapi:// -b cn=config`.
### no equality matching rule
En cas d'erreur du type :
~~~
ldap_modify: Inappropriate matching (18)
additional info: modify/delete: foo_attribute: no equality matching rule
~~~
Vérifiez que l'attribut concerné a bien une règle EQUALITY dansle schéma LDAP.
Si ce n'est pas possible d'ajouter une règle EQUALITY dansle schéma LDAP (par exemple pour les SYNTAX binary comme jpegPhoto), n'utilisez pas ldapmodify (LDAP_MOD_REPLACE) mais plutôt suppression et recréation si besoin.
### no such value
En cas d'erreur du type :
~~~
> ldap_modify: No such attribute (16)
> additional info: modify/delete: foo_attribute: no such value
~~~
Vérifier que votre attribut n'a pas des caractères spéciaux (saut de ligne, etc.), vous pouvez notamment d'abord remplacer votre ligne avec une valeur "test" pour voir si cela fonctionne.
### TLS error
Les erreurs SSL/TLS ne sont pas très explicites avec OpenLDAP, si vous en avez une, vérifiez d'abord que vos clés/certificats sont bien corrects avec des bons droits pour y accéder.