• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/06/2022

Gérez votre annuaire LDAP

Dans le chapitre précédent, vous avez vu que votre annuaire avait une structure particulièrement basique puisqu’il ne comporte que deux entrées. Vous avez également découvert qu’il était possible de décrire les changements à appliquer à un annuaire par le format LDIF.

Savez-vous que votre annuaire contient un deuxième DIT ? En effet, dans les anciennes versions de slapd, la configuration se faisait en modifiant des fichiers dans  /etc/ldap/  , et imposait de redémarrer le serveur pour être prise en compte. Cette méthode est toujours possible, mais il est maintenant recommandé d’utiliser la nouvelle méthode dite de “configuration à chaud” (en anglais OLC pour On-Line Configuration) qui permet de ne pas avoir à redémarrer le serveur pour actualiser.

Découvrez la configuration à chaud de slapd

Maintenant, la configuration est gérée sous forme d’un DIT dont le suffixe est  cn=config  , et le service reste disponible pendant l’application des changements. Vous pouvez voir les entrées de cet arbre par la commande :

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config

dn: cn=module{0},cn=config

dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: olcBackend={0}mdb,cn=config

dn: olcDatabase={-1}frontend,cn=config

dn: olcDatabase={0}config,cn=config

dn: olcDatabase={1}mdb,cn=config

Cette configuration contient donc des informations sur les modules, le schéma, les classes d’objets intégrées par défaut. La configuration propre à votre DIT  dc=mon-entreprise,dc=com  se trouve dans  olcDatabase={1}mdb,cn=config  .

Comme cette configuration est stockée sous forme de DIT, vous pouvez la modifier au moyen de fichiers LDIF. Pour tester ça, je vous propose de modifier la quantité de logs générée par slapd. Par défaut, slapd ne génère aucun log, et vous aimeriez peut-être avoir plus d’informations sur l’activité de votre serveur. L’attribut qui gère ça est directement un attribut de  cn=config  appelé  olcLogLevel  .

$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -s base -b cn=config olcLogLevel
dn: cn=config
olcLogLevel: none
Étendue de la recherche en fonction de la valeur du paramètre
Étendue de la recherche en fonction de la valeur du paramètre "scope"

Vous allez faire passer le niveau de logs à  stats  . Ça génèrera peut-être trop de messages pour un système en production, mais ce sera parfait pour vos tests. Pour cela, enregistrez un fichier  logLevel.ldif  contenant :

dn: cn=config
changeType: modify
replace: olcLogLevel
olcLogLevel: stats

Reprenons ensemble en détail cette commande :

dn: cn=config

le DN à modifier

changetype: modify

le type de modification de l’objet à effectuer

replace: olcLogLevel

l’attribut à modifier

olcLogLevel: stats

la nouvelle valeur de l’attribut

Vous pouvez appliquer ce changement par la commande :

$ sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logLevel.ldif

Les options sont les mêmes que pour  ldapsearch  , sauf le  -f  qui indique le fichier LDIF à appliquer.

À partir de maintenant, votre serveur slapd va générer des logs mais ils seront renvoyés vers le fichier général  /var/log/syslog  . Pour indiquer au daemon rsyslog qui gère les logs d’avoir un fichier de log séparé, créez le fichier  /etc/rsyslog.d/10-slapd.conf  contenant :

# Logs du serveur OpenLDAP slapd
local4.* /var/log/slapd.conf

Puis redémarrez rsyslog par la commande :

$ sudo systemctl restart rsyslog

Bravo, vous avez réalisé votre première modification grâce à un fichier LDIF. La prochaine étape consiste à faire évoluer votre annuaire vers la structure suivante :

Schéma de la structure du DIT à créer. Une racine
Structure du DIT à créer

Ajoutez de nouveau nœuds pour compléter votre DIT

Pour ajouter de nouveaux nœuds et un premier utilisateur à votre arbre, vous allez utiliser un fichier LDIF. Créez donc le fichier  structure.ldif  contenant :

dn: ou=Personnes,dc=mon-entreprise,dc=com
objectclass: organizationalUnit
ou: Personnes
description: Employes de l entreprise

dn: ou=Machines,dc=mon-entreprise,dc=com
objectclass: organizationalUnit
ou: Machines
description: Ordinateurs de l entreprise

dn: cn=Marie Dupond,ou=Personnes,dc=mon-entreprise,dc=com
objectClass: inetOrgPerson
givenName: Marie
sn: Dupond
cn: Marie Dupond
uid: mdupond
userPassword: mdupond

La structure du fichier est la même mais comme vous rajoutez plusieurs entrées, vous devez sauter une ligne après chaque DN. Ce fichier rajoute d’abord deux  ou  : un pour inventorier les employés et un pour inventorier les ordinateurs de l’entreprise. Il rajoute ensuite une personne avec la classe d’objet  inetOrgPerson  . Vous avez déjà vu les autres attributs, à l’exception du mot de passe à la fin (qui sera chiffré par slapd) et de l’  uid  qui correspond au login ou à un uid numérique, suivant l’usage qui est fait de ce champ.

Vous remarquerez aussi que dans ce fichier, vous n’utilisez pas l’attribut  changetype  pour préciser qu’il s’agit d’un ajout, car vous allez utiliser la commande  ldapadd  qui précise ça par elle-même :

$ sudo ldapadd -x -W -D “cn=admin,dc=mon-entreprise,dc=com” -H ldap://localhost -f structure.ldif

Pourquoi ne pas utiliser les mêmes options de connexion que pour la commande Idamodify que j’ai utilisée précédemment ?

Par défaut, l’utilisateur root système a les droits de modification sur le DIT  cn=config  mais pas sur votre DIT. Sauf à changer ces droits, vous devez donc passer par le compte administrateur de votre DIT. Voici le détail des options :

  • -x  : indique une authentification simple par mot de passe ;

  • -W  : affiche une invite interactive pour taper le mot de passe du compte ;

  • -D  : pour indiquer le DN du compte à connecter ;

  • -H  : indique toujours la méthode de connexion choisie, mais cette fois-ci  ldap://localhost  initie une connexion par le réseau sur le port TCP 389.

Félicitations, vous avez créé votre première base LDAP, et vous pourrez utiliser votre nouvel utilisateur pour vous authentifier sur votre site web dans les prochains chapitres.

Je termine simplement ce chapitre en vous montrant une autre utilisation possible des fichiers LDIF : la sauvegarde à chaud de votre annuaire dans un fichier texte.

Sauvegardez votre annuaire sous forme de fichier LDIF

Il y a un moyen très pratique pour réaliser des sauvegardes de votre annuaire.

Sauvegarder votre annuaire

Étape 1 : sauvegardez votre arbre.

$ sudo slapcat -b dc=mon-entreprise,dc=com -l mon_backup.ldif

Étape 2 : sauvegardez la configuration de votre annuaire.

$ sudo tar -cvf ma_conf_g_ldap.tar /etc/ldap

Restaurer vos données

Pour la restauration vos données en cas de besoin :

Étape 1 : éteignez slapd :

$ sudo systemctl stop slapd

Étape 2 : restaurez votre base à partir du fichier de sauvegarde :

$ slapadd -c -b dc=mon-entreprise,dc=com -F /etc/ldap/slapd.d -l mon_backup.ldif

L’option  -c  indique de continuer en cas d’erreur (vous voulez ajouter une entrée déjà présente, par exemple), l’option  -F  indique le répertoire de configuration et l’option  -l  le fichier LDIF à utiliser pour la restauration.

Étape 3 : restaurez votre configuration.

$ sudo tar -xvf ma_conf_g_ldap.tar /etc/ldap 

En résumé

  • slapd  permet de modifier la configuration à chaud par la méthode dite OLC.

  • Par la méthode OLC, la configuration est stockée sous forme d’un DIT de base  cn=config  .

  • Le format LDIF peut être utilisé pour ajouter de nouvelles unités d’organisation (  ou  ), des utilisateurs ou tout autre type d’entrées.

  • Le format LDIF peut également être utilisé pour réaliser des sauvegardes de votre annuaire.

Dans la partie suivante, vous explorerez l’univers du Web en installant un serveur LAMP (Linux-Apache-MySQL-PHP). Avant de nous intéresser à la suite du cours, testez vos connaissances à travers l'activité puis le quiz, dans les prochains chapitres.

Exemple de certificat de réussite
Exemple de certificat de réussite