Installer, configurer et Administrer LDAP

Vous allez avoir schématiquement 4 étapes :

  1. Installer les packages nécessaires

  2. configurer les fichiers de configuration

  3. initialiser la base de données

  4. configurer un client et tester le ou les services à partir d'un client

  5. passer à l'administration

Installer les packages sur le serveur

Il va falloir installer les packages OpenLDAP. La procédure est standard à partir de paquets (debian ou rpm), sinon à partir des sources.

tar xzvf openldap-x.y.z.tgz
cd openldap.x.y.z
./configure
make
make depend
make test
make install

Installez également les packages perl, php et "dévelop" pour l'administration.

ii  slapd          2.1.30-2       OpenLDAP server (slapd)
ii  ldap-utils     2.1.30-2       OpenLDAP utilities
ii  libldap2       2.1.30-2       OpenLDAP libraries
ii  php4-ldap      4.3.8-1        LDAP module for php4

Il est intéressant de prévoir aussi les bibliothèques de développement.

Les fichiers de configuration du serveur

Il faut bien identifier les objets à référencer et les objectifs de l'annuaire. Les fichiers sont dans "/etc/openldap".

Le premier fichier est "sldapd.conf" qui décrit les principaux paramètres de votre annuaire :

# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.6 2001/04/20 23:32:43 kurt Exp $
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
# Inclusion des schémas nécessaires
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema

# Options que vous pouvez modifier 
#pidfile        //var/run/slapd.pid
#argsfile       //var/run/slapd.args

#######################################################################
# ldbm database definitions
#######################################################################
# Choix du format de base de données pour le stockage des informations.
database        ldbm

# Configurer le suffixe (racine) de l'annuaire 
# en fonction du domaine  DNS
suffix          "dc=my-domain,dc=com"
# ou d'une autre organisation
#suffix         "o=My Organization Name,c=US"

# L'administrateur de l'annuaire
rootdn          "cn=Manager,dc=my-domain,dc=com"

# Le mot de passe de l'administrateur, préférer une option cryptée
# La commande htpasswd peut très bien faire l'affaire pour encrypter

# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg


# Emplacement de la base de données
directory       /var/lib/ldap

# Création des index. 
# Comme pour une base de données, indexer les rubriques
# les plus utilisées.

index   objectClass,uid,uidNumber,gidNumber,memberUid   eq
index   cn,mail,surname,givenname                       eq,subinitial

# La réplication ne sera  pas utilisée ici
# Vous pouvez répliquer tout ou partie d'un arbre
# activée par le daemon slurpd

# Directives de replication
# sinon les mettre dans un fichier à part et utiliser
# replogfile /chemincomplet/du/fichier

# Indiquer quels sont les serveurs réplicats
# et la méthode d'authentification
# Ici le serveur local, se répliquera sur ldap1

#replica host:ldap-1.example.com:389 
#       bindmethod=simple
#       binddn="cn=replicat_slave1, dc=mydomain, dc=fr"
#       credential=UnMotDePasse

# Accés par défaut sur la base
defaultaccess read

Protéger ensuite le fichier avec un "chmod 600 /etc/openldap/slapd.conf".

Les autorisations d'accès nécessitent une remarque.

Ici l'accès par défaut est "read", mais il est possible d'affiner. Par exemple avec des règles d'écriture comme:

access to <what> [ by <who> <none | compare | search | read | write>]
# Donne un accés en écriture pour le manager du domaine
access to * by dn="cn=Manager,dc=mydomain,dc=fr" write
# Donne un accés en lecture à tout le monde sur la base
access to * by * read
# Donne un accés en écriture sur un attribut pour le manager
#                en lecture pour les autres.
access to attr=uid 
                  by dn="manager,dc=mydomain,dc=fr" write
                  by * none

Le nombre d'options est très important, utilisez la commande "man slapd.conf".