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.