Configuration.
Pour Debian Squeeze le fichier slapd.conf se situe dans /usr/share/doc/slapd/examples/slapd.conf.
Il faut donc changer son emplacement avec cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/.
Puis modifier le fichier /etc/default/slapd et changer la ligne 'SLAPD_CONF=/etc/ldap/slapd.conf'.
La configuration de OpenLDAP se situe dans le fichier /etc/ldap/slapd.conf :
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_hdb
sizelimit 500
tool-threads 1
backend hdb
database hdb
suffix "dc=domaine,dc=fr"
directory "/var/lib/ldap"
rootdn "cn=admin,dc=domaine,dc=fr"
rootpw motdepasse # en clair ou généré via la commande slappasswd
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
lastmod on
checkpoint 512 30
access to attrs=userPassword,shadowLastChange
 by dn="cn=admin,dc=domaine,dc=fr" write
 by anonymous auth
 by self write
 by * none
access to dn.base="" by * read
access to *
 by dn="cn=admin,dc=domaine,dc=fr" write
 by * read
Après chaque modification de ce fichier, on relance OpenLDAP avec la commande suivante :
 # /etc/init.d/slapd restart
Création de l'annuaire.
On crée le fichier LDIF qui va initialiser le "sommet" de l'arbre :
 # cat cree_arbre.ldif
 dn: dc=domaine,dc=fr
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 dc: domaine
 o: domaine
On injecte le fichier LDIF dans l'annuaire via la commande ldapadd :
 # ldapadd -x -h localhost -W -D "cn=admin,dc=domaine,dc=fr" -f cree_arbre.ldif
 Enter LDAP Password: 
 adding new entry "dc=domaine,dc=fr"
Pour créer les autres entrées, on peut désormais utiliser PhpLdapAdmin.
Les programmes complémentaires.
Les outils en ligne de commande.
NB : les commandes suivantes sont fournies par le paquet Debian ldap-utils. Elles disposent des options génériques suivantes :
ldapadd.
La commande ldapadd permet d'ajouter des entrées dans l'annuaire LDAP.
Prenons par exemple le fichier LDIF suivant qui crée le suffixe (le basedn) de notre annuaire :
 # cat cree_arbre.ldif
 dn: dc=domaine,dc=fr
 objectClass: top
 objectClass: dcObject
 objectClass: organization
 dc: domaine
 o: domaine
Pour injecter ce fichier LDIF dans notre annuaire :
 # ldapadd -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -f cree_arbre.ldif -W
Si tout se passe bien, vous devez voir des lignes : 
 adding new entry "dc=domaine,dc=fr"
ldapsearch.
La commande ldapsearch permet d'interroger l'annuaire LDAP.
Affiche toutes les entrées de l'annuaire :
 # ldapsearch -x -h localhost -b "dc=domaine,dc=fr"
Affiche les attributs de l'utilisateur "bob" via l'utilisation d'un filtre :
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Affiche uniquement les attributs uid et homeDirectory de l'utilisateur "bob" :
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)" uid homeDirectory
ldapdelete.
La commande ldapdelete permet de supprimer une entrée de l'annuaire LDAP. On indique à cette commande le(s) dn(s) à supprimer.
Supprime l'utilisateur bob :
 # ldapdelete -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -W "cn=bob,ou=People,dc=domaine,dc=fr"
ldapmodify.
La commande ldapmodify permet de modifier une entrée de l'annuaire LDAP.
ldapmodrdn.
La commande ldapmodrdn permet de renommer une entrée de l'annuaire LDAP. Cette opération revient à changer le dn (distinguished name) d'une entrée.
ldapcompare.
La commande ldapcompare permet de comparer des entrées de l'annuaire LDAP.
ldappasswd.
La commande ldappasswd permet de changer le mot de passe d'une entrée de l'annuaire LDAP.
ldapwhoami.
La commande ldapwhoami permet de connaître avec quelle identité on est connecté à l'annuaire LDAP, c'est l'équivalent de la commande Unix "whoami".
slapadd est utilisé pour ajouter des entrées spécifiées dans le format LDAP Directory Interchange Format (LDIF) dans une base de données slapd.
slapcat est utilisé pour générer une sortie LDIF LDAP basé sur le contenu d'une base de données slapd.
slapd est un serveur LDAP autonome.
slapindex est utilisé pour regénérer les index de slapd suivant le contenu actuel d'une base de données.
slurpd est un serveur réplicat autoname pour LDAP.
PhpLdapAdmin.
PhpLdapAdmin est un logiciel qui permet d'administrer un annuaire LDAP via une interface Web.
Installation :
 # apt-get install phpldapadmin
Configuration :
PhpLdapAdmin s'est configuré avec l'annuaire définit par défaut dans OpenLDAP. Si on a changé ce dernier, il faut modifier les deux lignes suivantes dans la configuration de PhpLdapAdmin :
 # vi /etc/phpldapadmin/config.php
 $ldapservers->SetValue($i,'server','base',array('dc=domaine,dc=fr'));
 $ldapservers->SetValue($i,'login','dn','cn=admin,dc=domaine,dc=fr');
À chaque modification de ce fichier, il est préférable de redémarrer apache :
 # /etc/init.d/apache2 restart
Accès à PhpLdapAdmin : http://localhost/phpldapadmin/
La réplication LDAP.
Configuration du provider LDAP.
On modifie le fichier /etc/ldap/slapd.conf du provider LDAP pour indiquer l'annuaire à répliquer, on rajoute les lignes en gras dans la configuration de l'annuaire et on modifie les attributs à indexer :
 # vi /etc/ldap/slapd.conf
 # On indique à OpenLDAP de charger le module
 # permettant la réplication
 moduleload syncprov.la
 database bdb
 suffix dc=domaine,dc=fr
 rootdn dc=domaine,dc=fr
 directory /var/ldap/db
 index objectclass,entryCSN,entryUUID eq
 overlay syncprov
 syncprov-checkpoint 100 10
 syncprov-sessionlog 100
Configuration du consumer LDAP.
On modifie /etc/ldap/slapd.conf du second OpenLDAP (le consumer) pour lui indiquer l'annuaire à répliquer et l'adresse du premier OpenLDAP (le provider).
 # vi /etc/ldap/slapd.conf
 database hdb
 suffix dc=domaine,dc=fr
 rootdn dc=domaine,dc=fr
 directory /var/lib/ldap2
 index objectclass,entryCSN,entryUUID eq
 syncrepl rid=123
 provider=ldap://<adresse IP ou nom du provider LDAP>:389
 type=refreshOnly
 interval=00:00:00:10
 searchbase="dc=domaine,dc=fr"
 filter="(objectClass=*)"
 scope=sub
 attrs="*"
 schemachecking=off
 bindmethod=simple
 binddn="cn=admin,dc=domaine,dc=fr"
 credentials=admin
Il faut ensuite créer le répertoire du nouvel annuaire et le donner à l'utilisateur et au groupe "openldap" :
 # mkdir /var/lib/ldap2
 # chown openldap.openldap /var/lib/ldap2
Il ne reste plus qu'à relancer OpenLDAP :
 # /etc/init.d/slapd restart
Validation de la réplication.
L'objectif est de constater la réplication des objets de l'annuaire.
Procédure n°1 : validation de l'ajout de données sur le réplicat.
Coté Provider.
 # cat bob.ldif
 dn: cn=bob,ou=People,dc=domaine,dc=fr
 objectClass: inetOrgPerson
 objectClass: posixAccount
 objectClass: top
 givenName: Eponge
 sn: Eponge
 cn: bob
 uid: bob
 userPassword: {MD5}F7WfMlfPOGcecKZLEkmjTA==
 uidNumber: 1001
 gidNumber: 1001
 homeDirectory: /home/bob
 loginShell: /bin/sh
 mail: bob@domaine.fr
 # ldapadd -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -f bob.ldif -W
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Coté Consumer.
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Procédure n°2 : validation de la suppression de données sur le réplicat.
Coté Provider.
 # ldapdelete -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -W "cn=bob,ou=People,dc=domaine,dc=fr"
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Coté Consumer.
 # ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"