25.4. Gestion de données dans l'annuaire LDAP

OpenLDAP propose une série d'outils pour l'administration de données dans l'annuaire LDAP. Les quatre principaux outils permettant d'ajouter, de supprimer, de rechercher ou de modifier des données sont brièvement présentés ci-dessous.

25.4.1. Insertion de données dans un annuaire LDAP

Lorsque la configuration de votre serveur LDAP dans /etc/openldap/lsapd.conf est correcte et prête à l'emploi (elle comporte des entrées appropriées pour suffix, directory, rootdn, rootpw et index), procédez à la saisie des enregistrements. OpenLDAP dispose de la commande ldapadd à cet effet. Si possible, ajoutez les objets à la base de données par lots pour des raisons pratiques. LDAP est en mesure de traiter le format LDIF (LDAP data interchange format) pour cela. Un fichier LDIF est un simple fichier texte pouvant contenir un nombre variable de couples attribut-valeur. Reportez-vous aux fichiers de modèles déclarés dans slapd.conf pour connaître les classes et attributs d'objets disponibles. Le fichier LDIF pour la création d'une ébauche de structure pour l'exemple dans la Figure 25.1, « Structure d'un annuaire LDAP » ressemblerait à celui dans l'Exemple 25.7, « Exemple pour un fichier LDIF ».

Exemple 25.7. Exemple pour un fichier LDIF

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]codage des fichiers LDIF

LDAP fonctionne avec UTF-8 (Unicode). Les trémas doivent être codés correctement. Utilisez un éditeur qui prend UTF-8 en charge, tel que Kate ou une version récente d'Emacs. Sinon, évitez les trémas et autres caractères spéciaux ou utilisez recode pour recoder la saisie en UTF-8.

Enregistrez le fichier avec l'extension .ldif puis envoyez-le au serveur à l'aide de la commande suivante :

ldapadd -x -D <dn of the administrator> -W -f <file>.ldif

-x désactive l'authentification avec SASL dans ce cas. -D déclare l'utilisateur qui appelle l'opération. Le DN valide de l'administrateur est saisi ici exactement comme il a été configuré dans slapd.conf. Dans cet exemple, cn=admin,dc=suse,dc=de. -W évite la saisie du mot de passe sur la ligne de commandes (en texte clair) et active une invite de mot de passe séparée. Ce mot de passe a été défini précédemment dans slapd.conf avec rootpw. -f transmet le nom de fichier. Des détails sur le fonctionnement de ldapadd peuvent être consultés dans l'Exemple 25.8, « ldapadd avec example.ldif ».

Exemple 25.8. ldapadd avec example.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.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"

Les données utilisateur individuelles peuvent être préparées dans des fichiers LDIF séparés. L'Exemple 25.9, « Données LDIF pour Tux » ajoute Tux au nouvel annuaire LDAP.

Exemple 25.9. Données LDIF pour Tux

# coworker 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: +49 1234 567-8

Un fichier LDIF peut contenir un nombre quelconque d'objets. Il est possible de transmettre au serveur des branches entières d'annuaire en une fois ou uniquement des parties comme le montre l'exemple des objets individuels. Si des données doivent être modifiées de façon relativement fréquente, une subdivision fine des objets individuels est recommandée.

25.4.2. Modification de données dans l'annuaire LDAP

L'outil ldapmodify est fourni pour modifier le stock de données. La meilleure façon pour ce faire consiste à modifier le fichier LDIF correspondant avant de transmettre ce fichier modifié au serveur LDAP. Pour modifier le numéro de téléphone du collègue Tux de +49 1234 567-8 en +49 1234 567-10, modifiez le fichier LDIF comme dans l'Exemple 25.10, « Fichier LDIF tux.ldif modifié ».

Exemple 25.10. Fichier LDIF tux.ldif modifié

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

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

Vous pouvez aussi transmettre directement les attributs à modifier à ldapmodify. La procédure correspondante est décrite ci-dessous :

  1. Démarrez ldapmodify et saisissez votre mot de passe :

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  2. Saisissez les modifications en respectant scrupuleusement la syntaxe dans l'ordre indiqué ci-dessous :

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

Vous trouverez des informations détaillées sur ldapmodify et sa syntaxe dans la page d'aide de ldapmodify(1).

25.4.3. Recherche ou lecture de données dans un annuaire LDAP

Avec ldapsearch OpenLDAP fournit un outil de ligne de commande pour la recherche de données au sein d'un annuaire LDAP et pour la lecture de données depuis ce dernier. Une requête simple emploierait la syntaxe suivante :

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

L'option -b détermine la base de recherche, la section de l'arborescence au sein de laquelle la recherche doit être menée. Dans ce cas, il s'agit de dc=suse,dc=de. Pour procéder à une recherche plus fine dans des sous-sections spécifiques de l'annuaire LDAP (par exemple, uniquement dans le département devel), transmettez cette section à ldapsearch avec -b. -x demande l'activation de l'authentification simple. (objectClass=*) indique que tous les objets contenus dans l'annuaire doivent être lus. Cette option de commande peut être utilisée après création d'une nouvelle arborescence d'annuaire pour vérifier que toutes les entrées ont été enregistrées correctement et que le serveur répond comme voulu. Vous trouverez de plus amples informations sur l'utilisation de ldapsearch dans la page d'aide correspondante (ldapsearch(1)).

25.4.4. Suppression de données d'un annuaire LDAP

Supprimez les entrées superflues avec ldapdelete. La syntaxe est similaire à celle des commandes décrites plus haut. Par exemple, pour supprimer l'entrée complète de Tux Linux, utilisez la commande suivante :

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