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
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 :
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-cildap://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.