LDAP
LDAP (Lightweight Directory Access Protocol) est un protocole standard permettant de gérer des annuaires, c'est à dire d'accéder à des bases d'informations sur des utilisateurs d'un réseau par l'intermédiaire des protocoles TCP/IP.
Un annuaire LDAP est en effet une base de données non relationnelle car les informations qu'il abrite sont des objets qui appartiennent à des classes.
Un schéma serait plus éloquent que du texte. Celui-ci nous permettrait de comprendre comment les informations sont organisées dans un annuaire LDAP.

Prérequis
# apt install slapd ldap-utils
Copier un exemple de configuration du serveur dans le dossier de Ldap
# cp /usr/share/slapd/slapd.conf /etc/ldap/
# cd /etc/ldap
Puisque nous optons pour la configuration du serveur à travers le fichier, il faut donc faire une petite action...
# mv slapd.d/ slapd.d.old

Configuration du serveur
Cela se passe dans /etc/ldap/slapd.conf
Il faudra donner les valeurs suivantes aux paramètres suivants tout en adaptant le DN de l'admin, son mot de passe et la racine à votre cas :
moduleload back_hdb
backend hdb
database hdb
suffix "dc=domaine,dc=com"
rootdn "cn=admin,dc=domaine,dc=com"
rootpw test123 // A ajouter !
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=domaine,dc=com" write
by anonymous auth
by self write
by * none
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="cn=admin,dc=domaine,dc=com" write
by * read
Configuration du client
Cela se passe dans /etc/ldap/ldap.conf
BASE dc=domaine,dc=com
URI ldap://127.0.0.1
Redémarrer le service
# systemctl restart slapd.service

Pour alimenter un annuaire Ldap, il vaut mieux mettre les informations dans un fichier ldif
Note : Pour travailler avec Ldap, il y'a deux actions à faire : Écrire les informations dans un fichier et alimenter l'annuaire !
- Mise en place de la racine
Cela se passe dans le fichier racine.ldif (à créer) !

Alimentons en suite l'annuaire

Contenu de l'annuaire

La racine est bien en place !
2. Ajoutons des unités organisationnelles
Le fichier ou.ldif va abriter ces informations

Note : On peut mettre plusieurs entrées dans un même fichier en les séparant par une ligne. C'est ce que nous venons de faire dans le fichier ou.ldif avec les deux entrées.
Alimentation de l'annuaire

Résultat

3. Ajout de comptes systèmes
Nous allons créer deux utilisateurs :
- Eduard Snowden qui sera dans l'unité organisationnelle telecoms
- Steve Jobs qui sera dans l'unité organisationnelle marketing
Ces informations seront abritées par le fichier users.ldif. Voici son contenu :
dn: uid=eduard,ou=telecoms,dc=domaine,dc=com
objectclass: posixAccount
objectclass: shadowAccount
objectclass: inetOrgPerson
uid: eduard
uidNumber: 3000
gidNumber: 3000
loginShell: /bin/bash
homeDirectory: /home/eduard
gn: Eduard
sn: Snowden
cn: Eduard Snowden
mail: eduard.snowden@hotmail.com
userPassword: 12345
employeeType: Permanent
employeeNumber: AA-3000
dn: uid=steve,ou=marketing,dc=domaine,dc=com
objectclass: posixAccount
objectclass: shadowAccount
objectclass: inetOrgPerson
uid: steve
uidNumber: 3001
gidNumber: 3001
loginShell: /bin/bash
homeDirectory: /home/steve
gn: Steve
sn: Jobs
cn: Steve Jobs
mail: steve.jobs@hotmail.com
userPassword: 12345
employeeType: Permanent
employeeNumber: AA-3001
Alimentation de l'annuaire

Un compte système sans groupe, n'est pas complet, donc créons les groupes systèmes des deux comptes. Le fichier group.ldif abritera ces infos !
dn: ou=groupes,dc=domaine,dc=com
objectclass: organizationalUnit
ou: groupes
dn: cn=eduard,ou=groupes,dc=domaine,dc=com
objectclass: posixGroup
cn: eduard
gidNumber: 3000
memberUid: eduard
dn: cn=steve,ou=groupes,dc=domaine,dc=com
objectclass: posixGroup
cn: steve
gidNumber: 3001
memberUid: steve
Nous avons d'abord créé un conteneur qui s'appelle groupes qui va abriter les différents groupes.
Alimenter l'annuaire

Quelques commandes Ldap
- Affichons les informations concernant l'utilisateur steve

- Affichons les utilisateurs de l'unité organisationnelle telecoms
# ldapsearch -xLLLWD "cn=admin,dc=domaine,dc=com" -b "ou=telecoms,dc=domaine,dc=com"

- Supprimons le compte de Steve

Voici un récapitulatif de ce que nous avons fait :
Ces comptes ne sont pas là uniquement pour être contemplés, leur utilisation peut être concrète grâce aux modules PAM et NSS.
Mais il est important de savoir qu'il n'y a pas que ce type d'informations qu'on peut stocker dans un annuaire Ldap. Pour plus de renseignements, il faudra consulter les fichiers qui sont dans le dossier /etc/ldap/schema