Introduction à LDAP

Avant de commencer la configuration, il est conseillé d'établir l'inventaire des objets et des informations à stocker dans l'annuaire.

Dans le cadre de cet article, nous nous intéresserons à une gestion centralisÈe des carnets adresses. Sur notre intranet, nous avons installÈ une messagerie avec Qmail. En effet il peut être intéressant de rassembler les informations contenues dans les carnets d'adresse de chacun dans une base stockÈe au niveau du serveur, directement disponible dans les clients de messagerie de tous les utilisateurs.

Les utilisateurs sont caractÈrisÈs par

De plus, pour dÈfinir la racine principale de l'annuaire, on imagine que tous les utilisateurs font partie de la sociÈtÈ ´ commentcamarche ª situÈe en France. Cela va donner comme racine : o=commentcamarche, c=fr (o pour organization et c pour country)

Lors de la configuration de l'annuaire, il est nécessaire d'intervenir sur plusieurs fichiers de configuration situÈs dans le rÈpertoire /etc/openldap :

Edition du fichier slapd.conf

Editons tout d'abord le fichier slapd.conf :

   # 
   # See slapd.conf(5) for details on configuration options. 
   #This file should NOT be world readable. 
   # 

   # inclusion des autres fichiers de configuration 
   include /etc/openldap/slapd.at.conf 
   include /etc/openldap/slapd.oc.conf 

   # vÈrification que l'on utilise rÈellement ou non la structure 
   # des objets c'est ý dire que si vous mettez ´ on ª ici, vous 
   #devez n'utilisez que que les propriÈtÈs des objets dÈfinies 
   #dans les fichiers .oc.conf 
   schemacheck off 

   # fichiers qui stockent les arguments et les PID du serveur 
   pidfile /var/run/slapd.pid 
   argsfile /var/run/slapd.args 

   ############################################################## 
   # ldbm database definitions 
   ############################################################## 

   # Type de l'annuaire LDAP 
   database ldbm 

   # DÈfinition de la racine du serveur 
   suffix "o=commentcamarche, c=fr" 

   # DÈfinition du compte d'administration ici ldap_admin 
   # c'est un nom arbitraire et ce n'est pas forcÈment un 
   # utilisateur dÈfini dans /etc/passwd du systËme 
   rootdn "cn=ldap_admin, o=commentcamarche, c=fr" 
   rootpw secret 

   # cleartext passwords, especially for the rootdn, should 
   # be avoid. See slapd.conf(5) for details. 
   # directory /var/lib/ldap 

   # DÈfinition des accËs autorisÈs ý la base LDAP 
   defaultaccess read
Pour affiner la configuration, il peut être utile de consulter les pages du man. Compte tenu que ce fichier contient le mot de passe en clair de l'administrateur de l'annuaire, il est impératif de positionner les droits ´ rw------- ª sur le fichier slapd.conf :
chmod 600 /etc/openldap/slapd.conf
Quelques indications pour la gestion des accËs ý votre annuaire. Dans le cas actuel, toutes les personnes ont un accËs en lecture mais il est possible de donner des droits particuliers en utilisant la directive access dont la syntaxe est :
access to <une partie de l'arbre> 
[by <une personne> <droits none|search|read|write>]
De plus, l'ordre d'Ècriture des rËgles a une grande importance. Par exemple :
   access to dn= ´ .*, o=commentcamarche, c=fr ª by * search 
   access to dn= ´ .*, c=fr ª by * read
Signifie que tout le monde a le droit en lecture sur toute l'arborescence c=fr exceptÈ sur la partie o=commentcamarche o˜ les utilisateurs ont un droit en recherche seulement. Le fait d'inverser l'ordre de ces deux lignes, impliquera que la directive concernant c=fr en lecture sera la seule ý Ítre prise en compte et, on ne protËgera plus ainsi la partie de l'arbre o=commentcamarche en recherche seulement.

Edition du fichier slapd.oc.conf

Le fichier etc/openldap/slapd.oc.conf dÈcrit la structure des objets qui vont Ítre utilisÈs dans l'annuaire LDAP.
Il est inclu dans le fichier slapd.conf par la directive include /etc/openldap/slapd.oc.conf.

Par exemple dans notre cas, nous allons utiliser les objets organization et person dont les dÈfinitions sont :

      objectclass organization
    requires
        objectClass,
        o
    allows
        businessCategory,
        description,
        destinationIndicator,
        facsimileTelephoneNumber,
        internationaliSDNNumber,
        l,
        physicalDeliveryOfficeName,
        postOfficeBox,
        postalAddress,
        postalCode,
        preferredDeliveryMethod,
        registeredAddress,
        searchGuide,
        seeAlso,
        st,
        streetAddress,
        telephoneNumber,
        teletexTerminalIdentifier,
        telexNumber,
        userPassword,
        x121Address

objectclass person
    requires
        objectClass,
        sn,
        cn
    allows
       objectclass organization
    requires
        objectClass,
        o
    allows
        businessCategory,
        description,
        destinationIndicator,
        facsimileTelephoneNumber,
        internationaliSDNNumber,
        l,
        physicalDeliveryOfficeName,
        postOfficeBox,
        postalAddress,
        postalCode,
        preferredDeliveryMethod,
        registeredAddress,
        searchGuide,
        seeAlso,
        st,
        streetAddress,
        telephoneNumber,
        teletexTerminalIdentifier,
        telexNumber,
        userPassword,
        x121Address

objectclass person
    requires
        objectClass,
        sn,
        cn
    allows
        description,
        seeAlso,
        telephoneNumber,
        userPassword
 description,
        seeAlso,
        telephoneNumber,
        userPassword
Dans le cas ci-dessus, trois champs sont obligatoires (objectClass, sn et cn) et il est aussi possible de renseigner quatre autres champs (description, seeAlso, telephoneNumber, UserPassword).
Afin d'utiliser l'annuaire LDAP pour assurer l'authentification sur leur systËme, il faut mettre en oeuvre une sÈrie d'objets qui sera dÈcrite un peu plus loin... le fait de renseigner le champ password ne suffit pas !
Il est possible de créer des objets personnalisés en crÈant un nouveau fichier suffixÈ .oc.conf que vous devez inclure ensuite ý l'aide de la directive ´ include ª.

Edition du fichier slapd.at.conf

Pour terminer, il existe un troisiËme fichier de configuration qui est /etc/openldap/slapd.at.conf. Ce fichier contient la syntaxe et le type (bin, ces, tel...) des diffÈrents attributs. Vous trouverez des informations supplÈmentaires sur les types dans les pages du man.

Attribute photo bin
Attribute personalsignature bin
Attribute jpegphoto bin
Attribute audio bin
Attribute labeledurl ces
Attribute ref ces
Attribute userpassword ces
Attribute telephonenumber tel
Attribute facsimiletelephonenumber fax tel
Attribute pagertelephonenumber pager tel
Attribute homephone tel
Attribute mobiletelephonenumber mobile tel
Attribute aliasedObjectName dn
Attribute member dn
Attribute owner dn
Attribute seealso dn
Attribute manager dn
Attribute documentauthor dn
Attribute secretary dn
Attribute lastmodifiedby dn
Attribute associatedname dn
Attribute naminglink dn
Attribute reciprocalnaminglink dn
Attribute dn dn

De la mÍme faÁon, pour ajouter de nouveaux attributs, il est possible de crÈer un nouveau fichier suffixÈ .at.conf, que vous devez inclure ensuite ý l'aide de la directive ´ include ª.

Lancement du serveur

Il ne nous reste plus qu'ý lancer notre serveur et faire en sorte qu'il dÈmarre automatiquement ý chaque redÈmarrage de la machine. Voici les deux mÈthodes pour vÈrifier et crÈer rapidement les liens nÈcessaires au dÈmarrage automatique d'un service.
Par exemple, le serveur LDAP doit Ítre lancÈ aux run-levels 3,4 et 5. Il faut donc taper la commande suivante :

chkconfig --level 345 ldap on
Èquivalent ý avec l'ancienne mÈthode :
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc3.d/S70ldap 
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc4.d/S70ldap 
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc5.d/S70ldap
Il doit Ítre stoppÈ aux run-levels 0,1,2,6 :
chkconfig --level 0126 ldap off
Èquivalent ý :
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc0.d/K40ldap 
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc1.d/K40ldap 
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc2.d/K40ldap 
ln -s /etc/rc.d/init.d/ldap /etc/rc.d/rc6.d/K40ldap
Maintenant que la structure de l'annuaire est définie, il est possible de lancer celui-ci en tapant la commande suivante :
/etc/rc.d/init.d./ldap start