Construction et utilisation du serveur LDAP (OpenLDAP)

Décembre 2016

Construction de la base de l'annuaire LDAP

Pour commencer à saisir des informations dans notre annuaire, il s'agit de créer deux fichiers texte au format LDIF. Avant de saisir les informations concernants les utilisateurs, il faut dans un premier temps définir la société qui est la racine de l'annuaire. Pour cela, il faut créer un fichier societe.txt contenant les informations suivantes :

   dn: o=commentcamarche, c=fr
   o:commentcamarche
   description: CCM est notre société de test pour l'annuaire LDAP
   postofficebox: Ville de votre société
   postaladdress: Adresse de votre société
   postalcode: Code postal de votre société
   objectclass: organization
Ensuite, pour entrer ces informations dans l'annuaire, il faut utiliser la commande suivante :
ldapadd -D "cn=ldap_admin, o=commentcamarche, c=fr" -W -f societe.txt
Le mot de passe de l'administrateur (dans le cas présent "secret") sera demandé  :
Enter LDAP Password: 
le message suivant devrait alors apparaître  :
adding new entry o=commentcamarche, c=fr
Le paramètre -D défini la chaîne de connexion à l'annuaire avec l'utilisateur ldap_admin. -W siginifie que l'on veut un prompt pour saisir le mot de passe. Il aurait été possible d'utiliser le paramètre « -w secret » mais l'inconvénient est que le mot de passe de l'administrateur est saisi en clair (-w n'est à utiliser seulement lors de la création des scripts pour automatiser certaines opérations). Enfin, le paramètre -f indique le fichier LDIF à insérer dans l'annuaire.

Nous allons procéder ensuite de la même façon pour créer notre premier utilisateur. Il s'agit d'éditer un fichier personne.txt qui contient :

   dn: cn=DUPOND Georges, o=commentcamarche, c=fr
   cn: DUPOND Georges
   mail: dupond@tuxserveur.tuxdomaine
   telephonenumber:84756
   objectclass: person
Deux remarques :
  • Tout d'abord pour ceux qui suivent :
    - comment se fait-il que l'on puisse mettre un attribut mail alors qu'il n'est pas défini dans la structure de l'objet person ?
    c'est grâce à la directive « schemacheck off » placée dans le fichier slapd.conf qui indique que l'on a droit ne pas respecter complètement la structure des objets définis dans le fichier slapd.oc.conf !
  • C'est pour la même raison qu'aucun champ sn n'est défini dans le fichier
Ensuite, pour entrer ces informations dans l'annuaire, il faut utiliser la commande suivante :
ldapadd -D "cn=ldap_admin, o=commentcamarche, c=fr" -W -f personne.txt
Après avoir saisi le mot de passe, vous devriez obtenir :
adding new entry cn=DUPOND Georges, o=commentcamarche, c=fr
Pour saisir de nouveaux utilisateurs, il suffit de modifier le fichier personne.txt et utiliser la commande ldapadd.

Consultation de l'annuaire LDAP

La consultation de l'annuaire se fait par l'intermédiaire de la commande ldapsearch.

Trois exemples pour illustrer l'utilisation de cette commande :

ldapsearch -b « o=commentcamarche, c=fr » « o=commentcamarche »
Permet d'obtenir les informations concernant la société. (-b est utilisé pour préciser le point de départ de la recherche).
ldapsearch -b « o=commentcamarche, c=fr » « objectclass=person»
Permet d'obtenir les informations concernant les utilisateurs que vous avez saisi que votre annuaire.
ldapsearch -b « o=commentcamarche, c=fr » « cn=DUPOND*»
Permet d'obtenir les informations de tous les utilisateurs DUPOND présents dans votre annuaire.

Suppression d'un élément de l'annuaire LDAP

Pour supprimer un élément, la commande ldapdelete doit être utilisé en précisant le Distinguished Name (DN) complet de l'objet à détruire. Ne pas oublier de préciser aussi l'utilisateur à utiliser pour effectuer la destruction, ici ldap_admin. Par exemple, pour détruire l'utilisateur PILLOU Jean-François de l'annuaire :

ldapdelete -v -D "cn=ldap_admin,
									o=commentcamarche,
									c=fr"
								-W « cn=PILLOU Jean-François,
									 o=commentcamarche,
									 c=fr »
Vous devez obtenir (-v est l'option verbose : mode « parlant ») le message suivant :
deleting entry "cn=PILLOU Jean-François, o=commentcamarche, c=fr"
removed

modification d'un élément de l'annuaire LDAP

La modification de l'annuaire n'est pas une opération facile. Il faut dans un premier lieu créer un fichier contenant les modifications puis lancer la commande ldapmodify. Par exemple, pour modifier le numéro de téléphone de l'utilisateur DUPOND, on doit créer un fichier modif.txt contenant les informations suivantes :

   dn: cn=DUPOND Georges, o=commentcamarche, c=fr
   changetype: modify
   replace: telephoneNumber
   telephoneNumber: 72845
Puis lancer ensuite la commande :
ldapmodify -v -D "cn=ldap_admin, o=commentcamarche, c=fr" -W -f modif.txt
Pour obtenir le résultat suivant :
   replace telephoneNumber :
   72845
   modifying entry cn=DUPOND Georges, o=commentcamarche, c=fr
   modify complete
De plus, il est possible d'ajouter ou supprimer des éléments des objets en utilisant la syntaxe suivante dans le fichier texte :
   dn: cn=DUPOND Georges, o=commentcamarche, c=fr
   mail
Cela aura pour effet de supprime le mail de l'utilisateur DUPOND.
   dn: cn=DUPOND Georges, o=commentcamarche, c=fr
   +description=UtilisateurDUPOND
Ajoute la propriété description à l'objet person DUPOND.

Quelques astuces

Pour saisir plusieurs personnes dans le même fichier personne.txt, il suffit de séparer chaque définition par une ligne blanche.

Pour réinitialiser complètement l'annuaire, il faut tout d'abord détruire la base existante puis relancer le serveur après avoir porté les modifications dans les fichiers de configuration.
Pour détruire l'ancienne base, il suffit de vider le répertoire /var/lib/ldap par la commande :

rm -fr /var/lib/ldap/*

Ecrit par Jeff Pillou et Michel Maudet


A voir également :

Ce document intitulé «  Construction et utilisation du serveur LDAP (OpenLDAP)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.