Académique Documents
Professionnel Documents
Culture Documents
Philippe Latu
philippe.latu(at)inetdoc.net
https://www.inetdoc.net
Résumé
1. Copyright et Licence
Copyright (c) 2000,2022 Philippe Latu.
Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.3 or any later version
published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included
in the section entitled "GNU Free Documentation License".
Méta-information
Ce document est écrit avec DocBook XML sur un système Debian GNU/Linux. Il est disponible en version
imprimable au format PDF : sysadm-net.ldap.qa.pdf.
Conventions typographiques
Tous les exemples d'exécution des commandes sont précédés d'une invite utilisateur ou prompt
spécifique au niveau des droits utilisateurs nécessaires sur le système.
• Toute commande précédée de l'invite $ ne nécessite aucun privilège particulier et peut être utilisée
au niveau utilisateur simple.
• Un protocole d'accès aux annuaires de type X.500 ou Lightweight Directory Access Protocol
Les entrées (Directory Service Entry) d'un annuaire LDAP sont distribuées suivant une arborescence
(Directory Information Tree) hiérarchisée que l'on peut voir comme un système de fichiers avec
ses répertoires et ses fichiers. Au sommet de l'arborescence on trouve un nom de racine (Domain
Component) ou suffixe.
• dn: dc=lab,dc=stri
• dn: ou=lab1,dc=lab,dc=stri
dn: ou=lab2,dc=lab,dc=stri
• dn: cn=etu1,ou=lab1,dc=lab,dc=stri
dn: cn=etu2,ou=lab1,dc=lab,dc=stri
dn: cn=etu3,ou=lab2,dc=lab,dc=stri
dn: cn=etu4,ou=lab2,dc=lab,dc=stri
L'adresse de chaque entrée appartient à une classe d'objet (ObjectClass) spécifiée dans un schéma
(schema). En reprenant les mêmes exemples d'entrées, on peut associer les classes d'objets
correspondantes.
entry objectclass
o: lab.stri organisation
sn: etu1
Un schéma peut être vu comme un ensemble de règles qui décrivent la nature des données stockées.
C'est un outil qui aide à maintenir la cohérence, la qualité et qui évite la duplication des données dans
l'annuaire. Les attributs des classes d'objets déterminent les règles qui doivent être appliquées à une
entrée. Un schéma contient les éléments suivants.
Dans la requête ci-dessous, on privilégie la recherche dans les champs de description des
paquets.
Q2. Quels sont les paquets Debian à installer pour mettre en œuvre un serveur LDAP ?
Dans liste obtenue en réponse à la question précédente, rechercher les paquets relatifs aux
utilitaires et au serveur.
Lors de l'installation, deux écrans debconf demandent la saisie du mot de passe administrateur
du service LDAP.
À partir de ces informations, on identifie le démon serveur slapd, le compte utilisateur et le groupe
système propriétaires du processus (openldap) et enfin le répertoire contenant les fichiers de
configuration /etc/ldap/slapd.d.
Q4. Comment identifier le ou les numéros de ports ouverts par le service installé ?
Utiliser une commande d'affichage de la liste des ports ouverts sur le système.
Les numéros de port enregistrés pour le service LDAP sont disponibles dans le fichier /etc/
services.
Relativement au indications données par les commandes lsof et ss, c'est le numéro de port 389
qui est ouvert en écoute lors de l'installation du paquet slapd.
Q5. Quel est le mode de gestion de la configuration du service adopté depuis la version 2.4.23-3 du
paquet de la distribution Debian GNU/Linux ?
Consulter les fichiers de documentation fournis avec le paquet slapd.
Les documents relatifs au paquet slapd sont situés dans le répertoire /usr/share/doc/slapd/. Le
fichier README.Debian.gz contient un exemple d'instruction de consultation de la configuration du
service.
# ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"
Q6. Quel est le gestionnaire de base de données (backend) proposé dans l'annuaire de
configuration ?
Reprendre la commande préconisée en réponse à la question précédente en utilisant le type de
base de donnée comme filtre.
# {1}mdb, config
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain
olcRootPW: {SSHA}Hsonccb6iwsCLyvV5Qa8SNbwO9vNVVej
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Par définition, un annuaire LDAP est une base de données optimisée en lecture. Du point de
vue implémentation, les entrées sont stockées sous forme «binaire» et indexées à l'aide d'un
gestionnaire de base de données. Le gestionnaire d'arrière plan proposé par défaut est mdb. Il
s'agit d'une variante récente du gestionnaire Berkeley DB transactional backend.
Q7. Comment identifier le nom de l'annuaire fourni par défaut avec le paquet slapd ?
Rechercher la clé olcSuffix dans la configuration de l'annuaire.
Q8. Quels sont les schemas actifs avec la configuration courante du paquet slapd ?
Rechercher la clé olcSchemaConfig dans la configuration de l'annuaire.
Q9. Où sont stockées les bases définies par défaut lors de l'installation du paquet slapd ?
Rechercher la clé olcDbDirectory dans la configuration de l'annuaire.
C'est dans le répertoire /var/lib/ldap que sont stockées les fichiers des bases Berkeley DB.
# ls -lAh /var/lib/ldap/
total 68K
-rw------- 1 openldap openldap 64K sept. 12 17:21 data.mdb
-rw------- 1 openldap openldap 8,0K sept. 12 17:21 lock.mdb
Note
Les manipulations proposées dans cette section permettent de reprendre à zéro la
configuration d'un annuaire LDAP. Il peut être utile de revenir à cette étape en cas de «doute»
sur l'intégrité de l'annuaire lors du traitement des questions des sections suivantes.
Chaque processus système dispose d'un script de gestion de son lancement, arrêt (et|ou)
redémarrage. Avec le gestionnaire systemd, il faut faire une recherche dans la liste des services.
Une fois le service identifié, on l'arrête avec la commande systemctl.
# systemctl list-units | grep slapd
slapd.service loaded active running LSB: OpenLDAP standalone server
Q11. Quels sont les éléments à supprimer pour pouvoir installer une nouvelle configuration et une
nouvelle base LDAP ?
Utiliser le résultat de la question sur la localisation des bases et la documentation fournie avec
le paquet slapd.
À partir des réponses aux questions ci-dessus, on sait que c'est le répertoire /var/lib/ldap/ qui
contient les bases. La lecture du fichier de documentation du paquet avec la commande # zless /
usr/share/doc/slapd/README.Debian.gz indique que les fichiers de configuration sont situés dans le
répertoire /etc/ldap/slapd.d/.
On supprime donc tous ces fichiers et répertoires.
# rm /var/lib/ldap/*
# rm -rf /etc/ldap/slapd.d
C'est la commande dpkg-reconfigure qui sert à réviser les paramètres de configuration d'un
paquet. Voici une copie des écrans proposés avec le paquet slapd.
# dpkg-reconfigure slapd
No configuration file was found for slapd at /etc/ldap/slapd.conf. ... (warning).
Creating initial configuration... done.
Creating LDAP directory... done.
Starting OpenLDAP: slapd.
• Quatre compte utilisateurs : papa et maman Skywalker ainsi que leurs deux enfants
Toutes les manipulations sur les objets de l'annuaire utilisent un format de fichier texte particulier
baptisé LDIF pour LDAP Data Interchange Format. C'est un format de représentation des données
contenues dans un annuaire particulièrement utile pour les opérations de sauvegarde et de restauration
en volume.
Du point de vue formatage, chaque enregistrement doit être séparé du suivant par une ligne vide et
chaque attribut d'un enregistrement apparaît sur une ligne sous la forme «nomAttribut: valeur».
Q14. Comment visualiser la liste des entrées contenues dans l'annuaire LDAP ?
Utiliser les pages de manuels de la commande ldapsearch et rechercher les informations sur les
méthodes d'authentification, la désignation de la base dans laquelle on effectue la recherche et
le nom distinctif utilisé pour se connecter à l'annuaire.
La commande ldapsearch propose plusieurs modes d'authentification qui influent sur la liste des
attributs affichés pour une même entrée. Dans notre exemple, ce sont les mots de passes qui
peuvent ne pas apparaître ou apparaître sous différentes formes.
dn: cn=admin,dc=lab,dc=stri
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Ykd1QVJVWi82UWt1WXhpd1QvS0ZVUHM5dkFpNVdwVU4=
dn: cn=admin,dc=lab,dc=stri
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
• L'option -LLL désactive l'affichage des commentaires et de la version LDIF utilisée dans la
réponse.
Q15. Comment activer la journalisation des manipulations sur les entrées de l'annuaire LDAP ?
Rechercher l'entrée relative au niveau de journalisation dans le DIT et modifier sa valeur de façon
à obtenir un état dans les journaux système à chaque opération sur l'annuaire.
La modification de l'entrée du DIT doit se faire à l'aide d'un fichier LDIF approprié.
on se propose de modifier la valeur none par stats de façon à journaliser les connexions,
les opérations et les résultats. Voici une copie du fichier LDIF permettant de réaliser cette
modification.
# cat setolcLogLevel2stats.ldif
# Set olcLogLevel 2 stats
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
On applique ce changement de valeur avec la commande ldapmodify puis on vérifie que l'attribut
a bien reçu le paramètre.
# ldapmodify -Y EXTERNAL -H ldapi:/// -f setolcLogLevel2stats.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
Enfin, on relève les traces de la dernière opération dans les journaux système.
Note
Dans le contexte des travaux pratiques, le nombre d'entrées de l'annuaire reste très limité
et la journalisation n'a pas d'impact mesurable sur les performances du système. Dans
un contexte d'exploitation réelle avec un annuaire comprenant au moins une dizaine de
milliers d'entrées, la situation est très différente et il faut limiter au maximum le recours à la
journalisation des transactions sur l'annuaire.
Pour ramener la valeur de l'attribut olcLogLevel à none, il suffit de créer un fichier LDIF avec la
directive correspondante.
# Set olcLogLevel 2 none
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: none
Q16. Quelle est la syntaxe du fichier LDIF qui permet d'ajouter les deux unités organisationnelles
(organisational unit) ?
Rechercher un tutoriel LDIF en ligne donnant un exemple de fichier LDIF avec une ou plusieurs
entrées ou:.
Voici un exemple de fichier LDIF contenant les déclarations des deux unités organisationnelles
à ajouter.
# cat ou.ldif
dn: ou=people,dc=lab,dc=stri
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=lab,dc=stri
objectClass: organizationalUnit
ou: groups
Q17. Quelle est la commande à utiliser pour ajouter une ou plusieurs entrées dans l'annuaire ?
Rechercher dans la liste des programmes fournis avec le paquet des outils LDAP.
C'est la commande ldapadd qui est utile dans notre contexte. On l'utilise en mode
d'authentification simple avec le fichier LDIF ci-dessus pour compléter l'annuaire.
# ldapadd -cxWD cn=admin,dc=lab,dc=stri -f ou.ldif
Enter LDAP Password:
adding new entry "ou=people,dc=lab,dc=stri"
On vérifie ensuite que les deux nouvelles entrées sont bien présentes dans l'annuaire.
dn: cn=admin,dc=lab,dc=stri
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Ykd1QVJVWi82UWt1WXhpd1QvS0ZVUHM5dkFpNVdwVU4=
dn: ou=people,dc=lab,dc=stri
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=lab,dc=stri
objectClass: organizationalUnit
ou: groups
Q18. Quelle est la commande à utiliser pour saisir manuellement un mot de passe et obtenir la chaîne
chiffrée correspondante ?
Rechercher dans la liste des programmes fournis avec les paquets de la distribution puis
consulter les pages de manuels correspondantes.
En effectuant une recherche par mot clé dans les pages de manuels du système, on peut
identifier l'outil recherché.
# man -k passwd | grep -i ldap
ldappasswd (1) - change the password of an LDAP entry
slappasswd (8) - OpenLDAP password utility
On utilise la commande slappasswd pour générer une chaîne chiffrée que l'on insère dans le
fichier LDIF des comptes utilisateurs.
# slappasswd
New password:
Re-enter new password:
{SSHA}LrPFvc6YekTGSEYiMezxYxcmE/0ZE/9L
Dans le contexte de ces travaux pratiques, on attribue le même mot de passe aux quatre comptes
utilisateurs.
Il existe une technique simple pour la génération de mots de passe utilisateurs aléatoires. Une
fois le mot de passe généré, il peut être transmis à l'utilisateur final par un «canal de confiance»
et implanté dans les attributs de l'annuaire relatifs au compte utilisateur.
# head -c 9 /dev/urandom | base64
piupfsRIU23u
# slappasswd -v -h "{SSHA}" -s piupfsRIU23u
{SSHA}PxK09I2Oi6ZA2bPP55Eptm9JRkJeP6oV
Q19. Quelle est la syntaxe du fichier LDIF qui permet d'ajouter les quatre utilisateurs avec leurs
attributs système : identifiants uid/gid, authentifiants login/passwd, etc ?
Rechercher un tutoriel LDIF en ligne donnant un exemple de fichier LDIF avec un exemple de
description des attributs d'un compte utilisateur.
Voici un exemple de fichier LDIF contenant les déclarations des quatre comptes utilisateurs à
ajouter.
# cat users.ldif
# Padmé Amidala
dn: uid=padme,ou=people,dc=lab,dc=stri
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: posixAccount
cn: Padme
sn: Padmé Amidala Skywalker
uid: padme
uidNumber: 10000
gidNumber: 10000
loginShell: /bin/bash
homeDirectory: /ahome/padme
userPassword: {SSHA}LrPFvc6YekTGSEYiMezxYxcmE/0ZE/9L
gecos: Padme Amidala Skywalker
# Anakin Skywalker
dn: uid=anakin,ou=people,dc=lab,dc=stri
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: posixAccount
cn: Anakin
sn: Anakin Skywalker
uid: anakin
uidNumber: 10001
gidNumber: 10001
loginShell: /bin/bash
homeDirectory: /ahome/anakin
userPassword: {SSHA}LrPFvc6YekTGSEYiMezxYxcmE/0ZE/9L
gecos: Anakin Skywalker
# Luke Skywalker
dn: uid=luke,ou=people,dc=lab,dc=stri
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: posixAccount
cn: Luke
sn: Luke Skywalker
uid: luke
uidNumber: 10003
gidNumber: 10003
loginShell: /bin/bash
homeDirectory: /ahome/luke
userPassword: {SSHA}LrPFvc6YekTGSEYiMezxYxcmE/0ZE/9L
gecos: Luke Skywalker
Q20. Quel est le paquet qui fournit, entre autres, la commande de consultation des entrées de
l'annuaire ?
Interroger la base de données des paquets pour obtenir les informations demandées.
Le paquet ldap-utils apparaît à la question sur la liste des paquets relatifs au service LDAP. Si
on recherche les commandes présentes dans la liste des fichiers de ce paquet, on obtient les
informations suivantes.
$ dpkg -L ldap-utils | grep bin
/usr/bin
/usr/bin/ldapmodrdn
/usr/bin/ldappasswd
/usr/bin/ldapdelete
/usr/bin/ldapsearch
/usr/bin/ldapmodify
/usr/bin/ldapexop
/usr/bin/ldapurl
/usr/bin/ldapcompare
/usr/bin/ldapwhoami
/usr/bin/ldapadd
Une fois ce paquet installé, il est possible d'utiliser toutes les commandes disponibles pour
manipuler les enregistrements de l'annuaire.
Q21. Quelle est la syntaxe d'interrogation de l'annuaire qui permet d'obtenir tous les attributs de
l'enregistrement correspondant à un utilisateur particulier ?
Q22. Quelle est la syntaxe de la commande permettant de changer le mot de passe de l'utilisateur
dont on an affiché les attributs à la question précédente ?
On utilise la commande ldappasswd fournie par le paquet ldap-utils comme dans le cas de
la commande de recherche. Après consultation des pages de manuels, on obtient la syntaxe
suivante.
# ldappasswd -x -H ldap://192.0.2.12 \
-D cn=admin,dc=lab,dc=stri -W -S uid=padme,ou=people,dc=lab,dc=stri
New password:
Re-enter new password:
Enter LDAP Password:
En posant exactement la même requête que dans la question précédente, on peut vérifier que
le mot de passe utilisateur a bien été modifié.
# ldapsearch -LLL -H ldap://192.0.2.12 \
-b dc=lab,dc=stri -D cn=admin,dc=lab,dc=stri -W uid=padme
Enter LDAP Password:
dn: uid=padme,ou=people,dc=lab,dc=stri
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: posixAccount
cn: Padme
sn:: UGFkbcOpIEFtaWRhbGEgU2t5d2Fsa2Vy
uid: padme
uidNumber: 10000
gidNumber: 10000
loginShell: /bin/bash
homeDirectory: /ahome/padme
gecos: Padme Amidala Skywalker
userPassword:: e1NTSEF9blZYUG9NTTNOdVdoZWFSOTBMZFBkY1lGZGRvSEVlTEY=
Q23. Quel est le nom du paquet relatif au mécanisme Name Service Switch permettant d'accéder aux
ressources de l'annuaire LDAP ?
Rechercher dans les bases du gestionnaire de paquets un paquet dont le nom débute par la
chaîne libnss.
Avertissement
Relativement au paquet libnss-ldap, le paquet libnss-ldapd modifie directement les
paramètres des fichiers /etc/pam.d/common-*.
Q24. Quels sont les paquets supplémentaires qui sont ajoutés lors de l'installation des bibliothèques
LDAP pour le mécanisme Name Service Switch ?
Utiliser les informations fournies par le gestionnaire de paquets pour chaque ajout.
• nscd(Name Service Cache Daemon) est un démon qui gère la recherche des mots de passe,
des groupes et hôtes des programmes en cours d’exécution, et met en cache le résultat pour
une prochaine recherche.
• nslcdfournit una autre démon pour la collecte des informations sur les comptes utilisateurs
depuis un serveur LDAP.
• nslcd-utils fournit des outils pour l'interrogation et la mise à jour des entrées d'annuaire LDAP.
Avertissement
Pour les besoins des travaux pratiques ou de la mise au point de l'authentification via LDAP,
il est utile de désactiver les services de cache qui ne sont utiles qu'en exploitation avec un
grand nombre d'entrées dans l'annuaire.
# systemctl stop nscd
Q25. Quel est le rôle de l'interface entre les fonctions PAM (Pluggable Authentication Modules) et
l'annuaire LDAP ?
Par définition, PAM est un mécanisme qui permet d'intégrer différents modes d'authentification
en les rendant transparents vis à vis de l'utilisateur et des logiciels qui accèdent aux ressources
du système. Dans le contexte de ces travaux pratiques, il s'agit de permettre à l'utilisateur de
se connecter, d'accéder au système de fichiers, de changer son mot de passe, etc sans avoir à
lancer des commandes spécifiques.
Q26. Quelles sont les principales étapes de la configuration des paquets de bibliothèques NSS et
PAM ?
Lors de l'installation des principaux paquets de bibliothèques LDAP, on passe par une série
de menus debconf qu'il faut renseigner correctement pour accéder au serveur LDAP de façon
transparente.
Avertissement
En cas d'erreur de saisie dans la série de menus ci-dessous, il faut reprendre la configuration
de chacun des deux paquets individuellement. Classiquement, on passe par la commande
dpkg-reconfigure.
# dpkg-reconfigure libnss-ldapd
# dpkg-reconfigure libpam-ldapd
# dpkg-reconfigure nslcd
Q27. Quelles sont les modifications apportées au fichier de configuration /etc/nsswitch.conf pour
activer l'accès aux ressources de l'annuaire LDAP ?
Lors de l'installation des paquets à l'étape précédente, le fichier /etc/nsswitch.conf a été modifié.
Q28. Comment illustrer simplement le fonctionnement du mécanisme Name Service Switch intégrant
l'utilisation de l'annuaire LDAP ?
Rechercher la commande de récupération des entrées depuis les bases de données
d'administration dans les outils fournis avec les bibliothèques standard (paquet libc-bin).
La commande getent fournie avec le paquet libc-bin donne la liste des entrées accessibles pour
chaque catégorie du fichier de configuration. Voici un exemple pour la catégorie passwd qui fait
apparaître les entrées de l'annuaire LDAP à la suite des comptes utilisateurs système issus des
fichiers locaux.
# getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
etu:x:1000:1000:Etudiant,,,:/home/etu:/bin/bash
rdnssd:x:104:65534::/var/run/rdnssd:/bin/false
systemd-timesync:x:105:108:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:106:109:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:107:110:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:108:111:systemd Bus Proxy,,,:/run/systemd:/bin/false
messagebus:x:109:113::/var/run/dbus:/bin/false
uuidd:x:100:101::/run/uuidd:/bin/false
_apt:x:110:65534::/nonexistent:/bin/false
avahi:x:111:116:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
nslcd:x:112:117:nslcd name service LDAP connection daemon,,,:/var/run/nslcd/:/usr/sbin/nologin
padme:x:10000:10000:Padme Amidala Skywalker:/ahome/padme:/bin/bash
anakin:x:10001:10001:Anakin Skywalker:/ahome/anakin:/bin/bash
leia:x:10002:10002:Leia Organa:/ahome/leia:/bin/bash
luke:x:10003:10003:Luke Skywalker:/ahome/luke:/bin/bash
Q29. Comment valider l'authentification d'un utilisateur déclaré dans l'annuaire LDAP ?
Choisir un service qui nécessite une authentification sur le système et qui utilise une entrée de
l'annuaire LDAP.
Avertissement
Après chaque manipulation sur la configuration des paquets libnss-ldapd et nslcd, il faut
impérativement relancer le démon de gestion du cache des services de noms : # systemctl
restart nscd.
Sans le redémarrage de ce démon, il est fréquent que les tests de connexion échouent alors
que la configuration système est correcte.
$ ssh anakin@fe80::b8ad:caff:fefe:65%vlan10
Warning: Permanently added 'fe80::b8ad:caff:fefe:65%vlan10' (ECDSA) to the list
of known hosts.
anakin@fe80::b8ad:caff:fefe:65%vlan10's password:
Linux LDAP-Client 4.12.0-1-686-pae #1 SMP Debian 4.12.6-1 (2017-08-12) i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Il ne manque que l'accès au système de fichiers pour que la configuration soit vraiment
complète.
Q30. Quel est le paquet à installer pour mettre en place le service Web White Pages ?
Rechercher sur le site LDAP Tool Box project, le lien de téléchargement direct du paquet Debian
pour le service White Pages.
Tout en bas de la page des téléchargements, on trouve un lien direct vers le paquet white-
pages_0.3-1_all.deb.
# dpkg -i white-pages_0.3-1_all.deb
<snip>
# aptitude -f install
<snip>
1. Le paquet apache2 comprend une liste d'outils dédiés aux manipulations sur les sites et leur
configuration.
# dpkg -L apache2 | grep "bin.*a2"
/usr/sbin/a2enmod
/usr/sbin/a2query
/usr/sbin/a2disconf
/usr/sbin/a2dismod
/usr/sbin/a2dissite
/usr/sbin/a2enconf
/usr/sbin/a2ensite
2. On utilise a2dissite pour désactiver le site par défaut et a2ensite pour activer les pages
blanches.
# a2dissite 000-default
<snip>
# a2ensite white-pages
<snip>
# apachectl configtest
<snip>
Syntax OK
Une fois le fichier modifié, il faut recharger le service Web avec la commande # systemctl reload
apache2.
Q33. Quel est l'attribut de la classe inetOrgPerson qui correspond à une photo d'identité ?
Rechercher les options de la commande ldapsearch qui permettent d'extraire la liste des
attributs de la classe inetOrgPerson.
• Une fois le contexte connu avec précision, on peut extraire la liste des attributs relatifs à la
classe inetOrgPerson.
Dans la liste ci-dessous, on repère l'attribut jpegPhoto qui correspond à notre besoin.
Q34. Quelle est la syntaxe du fichier LDIF qui permet de modifier l'attribut jpegPhoto d'un utilisateur
de l'annuaire ?
Rechercher un exemple de modification d'attribut avec la commande ldapmodify.
Rechercher aussi un fichier JPEG qui fasse office de photo d'identité.
Tout d'abord, on dépose le fichier JPEG à utiliser dans le dossier /var/tmp à titre d'exemple.
La syntaxe du fichier LDIF est relativement simple une fois que l'on a bien identifié le contexte.
# cat leia-photo.ldif
dn: uid=leia,ou=people,dc=lab,dc=stri
changetype: modify
add: jpegPhoto
jpegPhoto:<file:///var/tmp/leia.jpg
6. Documents de référence
OpenLDAP Software 2.4 Administrator's Guide
La documentation officielle : OpenLDAP Software 2.4 Administrator's Guide constitue le point
d'entrée essentiel pour la mise en œuvre du service LDAP.