Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. LDAP
  3. Provisionner l’annuaire LDAP
Extrait - LDAP Planification et mise en oeuvre d'un annuaire OpenLDAP
Extraits du livre
LDAP Planification et mise en oeuvre d'un annuaire OpenLDAP Revenir à la page d'achat du livre

Provisionner l’annuaire LDAP

Introduction

Ce chapitre va traiter de l’approvisionnement ou autrement dit du chargement des entrées dans un annuaire OpenLDAP, et des deux méthodes pour y parvenir. Puis il présentera les différentes commandes fournies aux clients LDAP pour accéder au contenu de l’annuaire et effectuer des opérations de lecture/recherche, mais aussi d’écriture.

Les méthodes de chargement de l’annuaire

La première méthode consiste à charger l’annuaire LDAP en ligne en utilisant les commandes d’opérations du protocole LDAP. Avec cette méthode dite "online", il suffit de démarrer le service "slapd" et d’ajouter des entrées à l’aide d’un client LDAP en ligne de commande de type ldapadd ou bien par l’intermédiaire d’un navigateur LDAP. Cette méthode est correcte en termes de temps de traitement pour des contenus relativement faibles de quelques centaines ou milliers d’entrées, mais devient inacceptable lorsque l’on atteint des dizaines ou des centaines de milliers d’entrées. Elle n’est donc surtout pas adaptée dans des situations de panne où une restauration des données doit être réalisée dans des délais relativement courts pour minimiser les coûts d’impact liés à l’arrêt de la production.

Ainsi, il faudra s’orienter vers une seconde méthode dite "offline" qui consiste à utiliser des commandes spéciales fournies avec le package "openldap-server" qui permettent de réaliser des chargements (ou création) d’entrées dans des temps beaucoup plus acceptables pour un environnement de production. Cependant, cette méthode nécessite...

Présentation des commandes LDAP

Les commandes qui vont être présentées sont toutes disponibles (en principe) depuis un client LDAP.

Par exemple, le package "openldap-client" fournit les commandes LDAP suivantes :


[root@ldap01 tmp]# rpm -ql openldap-clients-2.4.39-8.el6.x86_64 
/usr/bin/ldapadd 
/usr/bin/ldapcompare 
/usr/bin/ldapdelete 
/usr/bin/ldapexop 
/usr/bin/ldapmodify 
/usr/bin/ldapmodrdn 
/usr/bin/ldappasswd 
/usr/bin/ldapsearch 
/usr/bin/ldapurl 
/usr/bin/ldapwhoami
 

Ces commandes permettent ainsi de "lister/ajouter/supprimer/modifier" les entrées d’un annuaire LDAP à l’aide soit d’un fichier LDIF ou bien de manière interactive.

1. La commande ldapsearch

Comme son nom l’indique, cette commande permet de rechercher des entrées dans l’annuaire LDAP à partir d’attribut(s) recherché(s).

La syntaxe de base de la commande ldapsearch est la suivante :


ldapsearch -H hostname -D binduser -W -b <base> [-s portée] 
[filtre] [attributs]
 

Avec comme paramètres :

  • -H pour identifier le serveur LDAP (adresse IP ou nom de l’hôte).

  • -D pour spécifier l’identifiant de liaison.

  • -W afin d’être notifié pour le mot de passe.

  • -b permet de spécifier l’endroit à partir duquel sera réalisée la commande.

  • -s permet de définir la portée de la commande (base, one ou sub).

  • filtre identifie les entrées recherchées.

  • attributs spécifie les attributs à afficher pour chaque entrée trouvée.

Voici quelques exemples ci-dessous qui vont permettre de comprendre la syntaxe de cette commande ultra-puissante.

Dans le test ci-après, il sera réalisé une opération de recherche dans l’annuaire LDAP des entrées possédant la classe d’objet account. Cette recherche s’effectuera à partir de l’entrée dc=exemple,dc=com et ira chercher dans toutes les branches et les sous-branches de l’annuaire (paramètre -s sub).


[root@ldap01 tmp]# ldapsearch -h localhost -D "cn=root,dc=exemple,
dc=com" -W  -b "dc=exemple,dc=com" -s sub objectclass=account 
# extended LDIF 
# 
# LDAPv3 
# base <dc=exemple,dc=com> with scope subtree 
# filter: objectclass=account ...