Notes et transcriptions du cours “Gérez votre serveur Linux et ses services” disponible sur la plateforme Openclassrooms.
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.
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 :
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
La commande retourne :
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
.
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -s base -b cn=config olcLogLevel dn: cn=config olcLogLevel: none
-s base
pour indiquer le scope
, c’est-à-dire l’étendue de la recherche. base
effectue la recherche uniquement au niveau du DN indiqué, alors que par défaut le scope est subtree
pour rechercher sur toutes les entrées inférieures également.
É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 :
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 :
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
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.
Marie
au groupe Personnes
tant que ce groupe n’a pas été créé.
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 :
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 :
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.
Il y a un moyen très pratique pour réaliser des sauvegardes de votre annuaire.
Étape 1 : sauvegardez votre arbre.
slapcat -b dc=mon-entreprise,dc=com -l mon_backup.ldif
Étape 2 : sauvegardez la configuration de votre annuaire.
tar -cvf ma_conf_g_ldap.tar /etc/ldap
Pour la restauration vos données en cas de besoin :
Étape 1 : Arrêter le service slapd :
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.
tar -xvf ma_conf_g_ldap.tar /etc/ldap
Ce chapitre constitue une introduction à LDAP. Pour pouvoir utiliser votre annuaire dans un environnement de production, il resterait à renforcer la sécurité en utilisant des connexions chiffrées par TLS, et passer en revue les ACL qui définissent les droits d’accès à votre annuaire.
Dans ce cours, vous avez utilisé uniquement la ligne de commande pour gérer votre annuaire. C’est très utile pour comprendre le fonctionnement d’un annuaire LDAP ou pour débugger un annuaire mais pour une gestion au quotidien, vous préférerez peut-être utiliser une solution graphique telle que LAM ou phpldapAdmin.
slapd
permet de modifier la configuration à chaud par la méthode dite OLC ;cn=config
;ou
), des utilisateurs ou tout autre type d’entrées ;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.