29.4. Manipulation de données dans l'annuaire LDAP

OpenLDAP met à votre disposition toute une série de programmes pour la gestion des données dans l'annuaire LDAP. Nous présenterons ci-après les quatre principaux d'entre eux pour les opérations d'ajout, de suppression, de recherche et de modification de données.

29.4.1. Créer des données dans l'annuaire LDAP

Une fois que la configuration de votre serveur LDAP dans /etc/openldap/slapd.conf est correcte et opérationnelle (c'est-à-dire qu'elle comporte les indications appropriées pour suffix, directory, rootdn, rootpw et index), vous pouvez commencer à ajouter des enregistrements. OpenLDAP propose à cet effet le programme ldapadd. Pour des raisons pratiques, il est recommandé, dans la mesure du possible, d'ajouter les objets à la base de données par groupes. LDAP sait interpréter le format LDIF (de l'anglais LDAP Data Interchange Format, format d'échange de données LDAP). Un fichier LDIF est un fichier texte simple comportant un nombre quelconque de paires attribut-valeur. Les classes d'objets et les attributs disponibles figurent dans les fichiers schémas spécifiés dans slapd.conf. Le fichier LDIF destiné à créer un schéma grossier pour l'exemple dans Figure 29.1, « Structure d'un annuaire LDAP » se présenterait comme dans Exemple 29.7, « Exemple de fichier LDIF »).

Exemple 29.7. Exemple de fichier LDIF

# L'organisation SUSE 
dn: dc=suse,dc=de 
objectClass: dcObject
objectClass: organization 
o: SUSE AG 
dc: suse 

# L'unité d'organisation Développement (devel) 
dn: ou=devel,dc=suse,dc=de 
objectClass: organizationalUnit 
ou: devel 

# L'unité d'organisation Documentation (doc) 
dn: ou=doc,dc=suse,dc=de 
objectClass: organizationalUnit 
ou: doc 

# L'unité d'organisation Informatique interne (it) 
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit 
ou: it
[Important]Codage des fichiers LDIF

LDAP utilise le codage UTF-8 (Unicode). Par conséquent, les caractères accentués doivent être convenablement codés à la saisie. Utilisez un éditeur qui prend en charge UTF-8 (comme Kate ou les versions récentes d'Emacs). Sinon, évitez les lettres accentués et autres caractères spéciaux ou utilisez recode pour ré-encoder les données saisies en UTF-8.

Enregistrez le fichier sous le nom <fichier>.ldif et transférez-le sur le serveur à l'aide de la commande suivante :

ldapadd -x -D <dn de l'administrateur> -W -f <fichier>.ldif

L'option -x désactive dans ce cas à l'authentification via SASL. L'option -D désigne l'utilisateur chargé de cette opération ; saisissez ici le DN valide de l'administrateur tel qu'il a été configuré dans slapd.conf. Dans notre exemple, nous aurions cn=admin,dc=suse,dc=de. L'option -W permet d'éviter de saisir le mot de passe sur la ligne de commande (en clair) et active une demande de mot de passe séparée. Le mot de passe en question a été créé précédemment dans slapd.conf avec l'option rootpw. Le paramètre -f indique le nom du fichier. Vous pouvez voir dans Exemple 29.8, « ldapadd de exemple.ldif » le détail de l'appel de ldapadd.

Exemple 29.8. ldapadd de exemple.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f exemple.ldif 

Enter LDAP password: 
adding new entry "dc=suse,dc=de" 
adding new entry "ou=devel,dc=suse,dc=de" 
adding new entry "ou=doc,dc=suse,dc=de" 
adding new entry "ou=it,dc=suse,dc=de"

Vous pouvez spécifier les données liées aux utilisateurs dans des fichiers LDIF séparés. Exemple 29.9, « Fichier LDIF pour Tux » ajoute l'utilisateur Tux au nouvel annuaire LDAP.

Exemple 29.9. Fichier LDIF pour Tux

# Employé Tux 
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
objectClass: inetOrgPerson 
cn: Tux Linux 
givenName: Tux 
sn: Linux
mail: tux@suse.de
uid: tux 
telephoneNumber: +33 12 34 56 78 90

Un fichier LDIF peut comporter un nombre quelconque d'objets. Vous pouvez transférer au serveur des arborescences complètes ou uniquement des parties telles que des objets distincts. Si vous devez modifier vos données selon une fréquence relativement élevée, il est recommandé de définir une granularité fine avec des objets distincts, ce qui permet de faciliter le travail de recherche de l'objet à modifier dans un fichier de grande taille.

29.4.2. Modifier des données dans l'annuaire LDAP

Lorsque vous voulez modifier des données, utilisez le programme ldapmodify. Le plus simple consiste à modifier dans un premier temps le fichier LDIF concerné, puis à passer le fichier modifié au serveur LDAP. Ainsi, pour changer le numéro de téléphone de l'employé Tux de +33 12 34 56 78 90 en +33 12 34 56 78 45, éditez le fichier LDIF, comme indiqué dans Exemple 29.10, « Fichier LDIF modifié tux.ldif ».

Exemple 29.10. Fichier LDIF modifié tux.ldif

# Employé Tux 
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +33 12 34 56 78 45

Importez le fichier modifié dans l'annuaire LDAP à l'aide de la commande suivante :

ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

Autre possibilité : utiliser ldapmodify pour spécifier directement sur la ligne de commande les attributs à modifier. La procédure est la suivante :

  1. Exécutez la commande ldapmodify et saisissez votre mot de passe :

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    
    Enter LDAP password:
    
  2. Faites vos modifications dans l'ordre suivant, en respectant la syntaxe indiquée ci-après :

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
    changetype: modify
    replace: telephoneNumber 
    telephoneNumber: +33 12 34 56 78 45

Pour plus d'informations sur la commande ldapmodify et sur sa syntaxe, reportez-vous à la page de manuel correspondante (ldapmodify(1)).

29.4.3. Chercher ou extraire les données d'un annuaire LDAP

OpenLDAP fournit avec le programme ldapsearch un utilitaire en ligne de commande pour chercher des données dans un annuaire LDAP et pour en extraire des données. Une commande simple de recherche utiliserait la syntaxe suivante :

ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

L'option -b définit la base de la recherche, c'est-à-dire la partie de l'arbre dans laquelle la recherche doit se faire. Il s'agit dans le cas présent de dc=suse, dc=de. Pour effectuer une recherche plus fine dans des sous-domaines donnés de l'annuaire LDAP (par exemple uniquement dans la division devel), utilisez -b pour passer cette branche. -x indique qu'il faut utiliser une authentification simple. (objectClass=*) vous permet de décider que vous voulez lire tous les objets contenus dans votre annuaire. Utilisez cette commande après avoir constitué une nouvelle arborescence afin de vérifier si tous vos enregistrements ont été convenablement mis en place et si le serveur répond comme convenu. Vous trouverez des informations supplémentaires sur l'utilisation du programme ldapsearch dans la page de manuel correspondante (ldapsearch(1)).

29.4.4. Supprimer des données d'un annuaire LDAP

Supprimez les enregistrements dont vous n'avez plus besoin à l'aide du programme ldapdelete. La syntaxe est analogue à celle des commandes précédemment décrites. Ainsi, pour supprimer complètement du système l'enregistrement de l'utilisateur Tux Linux, vous devez saisir la commande suivante :

ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \
Linux,ou=devel,dc=suse,dc=de

SUSE LINUX Guide de l'administrateur 9.2