Introduction

Cette page traite de la configuration d'un annuaire LDAP afin de pouvoir s'en servir comme carnet d'adresse. Je présuppose plusieurs choses, tout d'abord que vous utilisez une distribution linux debian "testing", qu'un serveur ldap est installé sur la machine avec les utilitaires nécéssaires (avec la première hypothèse il vous suffit de taper en tant que root apt-get install slapd ldap-utils), et que vous avez un fichier au format ldif pour peupler votre base. Si vous ne remplissez pas ces 3 conditions, ce qui suit peut quand même vous être utile mais il faudra vous adapter (je pense que la principale différence se situe dans les chemins qui seront différents).

Design de la base

Et oui, je suis désolé mais une base LDAP doit être un minimum réflêchie si on souhaite lui assurer une évolutivité minimum (par exemple peut-être dans 6 mois vous voudrez passer à l'authentification LDAP et ce serait dommage de devoir recommencer tout ce qu'on fait actuellement à cause d'une paresse intelectuelle...). Enfin bref, tout ça pour dire qu'une base LDAP est organisée comme un arbre (techniquement appelé un DIT pour DIrectory Tree) et donc il faut lui choisir une racine et gréffer des branches. De manière générale la racine à pour nom votre domaine. Par exemple si mon domaine à moi est mon-domaine.com la racine (qui sera appelée suffix plus tard sera dc=mon-domaine,dc=com (d'après mes souvenirs dc signifie directory context). Ensuite il faut une branche qui contiendra le carnet d'addresses, on va l'appeler ou=contacts (ou pour organizational unit). Si vous souhaitez avoir plusieurs carnets séparés, rien ne vous empêche d'ajouter des branches encore en dessous, mais pour ma part je m'arrêterai ici.

Configuration du serveur

La configuration du serveur se passe comme souvent sous UNIX dans un fichier texte. Dans notre cas c'est le fichier /etc/ldap/slapd.conf (l'hypothèse debian intervient ici car par exemple avec Fedora, c'est le fichier /etc/openldap/slapd.conf).
Ce fichier est organisé, il contient d'abord les informations relatives au serveur puis celles concernant chaque base de données (car vous pouvez avoir plusieurs bases voire même de type différent). Par défaut sous debian c'est une base de type Berkeley, appelée bdb.
On commence par la configuration du serveur. Je vais ici aller vite et supposer par exemple que vous n'allez pas importer des données avec des attributs trop exotiques, sinon il faudrait ajouter des schémas au début du fichier (je vous laisse trouver tout seul).
Passons à ce qui demande du travail, la configuration de la base de données. Une fois que le type de base a été défini par la ligne
database bdb
on passe à la configuration de la base. On commence par définir la racine de l'arbre
suffix "dc=mon-domaine,dc=com"
puis l'administrateur. Pour cela on choisit nous même le nom,
rootdn "cn=admin,dc=mon-domaine,dc=com"
puis le mot de passe
rootpw secret
Alors concernant le mot de passe, si vous êtes inconscient vous pouvez le laisser en clair mais sinon vous pouvez le chiffrer. Pour cela il suffit d'utiliser la commande slappasswd. Par défaut celle-ci chiffre en utilisant SHA et va vous renvoyer une chaîne du type
{SSHA}secret il suffit alors de la copier-coller dans le fichier slapd.conf en n'oubliant pas la partie "{SSHA}". En effet vous pouvez tout à fait choisir un autre schéma de chiffrement, mais pour cela je vous renvoie à la page de manuel de slappasswd (man slappasswd).
Suivent alors quelques lignes qui permettent de configurer la base de données. Faites selon votre inspiration.
Enfin viennent les ACL qui vont vous permettre de définir les droits d'accès à la base. Alors personnellement j'ai gardé ceux par défaut de debian en remplaçant bien évidemment le dn de l'administrateur par celui que j'ai défini précédemment.
Enfin, on redémarre le serveur pour prendre en compte la nouvelle configuration
/etc/init.d/slapd restart

Définition de la base

À ce moment nous avons donc un serveur qui tourne, qui est près à faire des choses mais la base de données est encore complètement vide. Il va falloir la peupler mais tout d'abord il faut définir dans la base de données le DIT et entrer l'administrateur. Cela se fait simplement grâce à un fichier LDIF que l'on soumet à la base. Pour cela nous allons utiliser la commande slapadd en tant que root. En fait cette commande court-circuite le serveur et lit directement le fichier de configuration pour exécuter ce qui est demandé. Aussi il vaut mieux arrêter le serveur avant de l'utiliser.
/etc/init.d/slapd stop
Voici maintenant le fichier (qui sera par la suite référencé comme ossature.ldif) que nous soumettons. Il définit la base avec sa racine, l'arborescence et enfin l'administrateur.

# First the root of the ldap base
dn: dc=verhoeven,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
dc: verhoeven
o: verhoeven
description: The ldap database of Yann Verhoeven

# The branch containing the addresses of my contacts
dn: ou=contacts,dc=verhoeven,dc=org
ou: contacts
objectClass: top
objectClass: organizationalUnit
description: The branch containing the addresses of the contacts

#The definition of the administrator
dn: cn=admin,dc=verhoeven,dc=org
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: LDAP administrator

Pour que ce fichier soit pris en compte, il suffit alors de taper la commande suivante :
slapadd -l ossature.ldif
Et voilà, il ne reste plus qu'à soumettre votre fichier ldif (noté fichier.ldif) après avoir pris soin de le convertir en UTF-8 (iconv fait très bien le travail).
slapadd -l fichier.ldif
On redémarre alors la base et le travail est fini !
/etc/init.d/slapd start
Il ne reste plus qu'à se connecter en utilisant gq, ou tout autre logiciel implémentant LDAP.