[ Présentation | format de la base et définitions ( Le Directory Information Tree , Les attributs , Les classes d'objet , Les schémas ) | Installation d'OpenLDAP    ( Présentation , installation par tarball ,installation par RPM Mdk ) | Mettre en place son schéma d'annuaire ( Mise en place des classes d'objet , choix du suffixe ) | Configuration du serveur LDAP  | Lancement du serveur | Ajouter un enregistrement | Rechercher un enregistrement | Modifier un enregistrement ( Rajouter un attribut à un enregistrement , modifier un attribut , supprimer un attribut , supprimer un enregistrement)  ]

Dernière modification 5 novembre 2004

OpenLDAP 2.1.25 (rpm Mdk 10.0) et 2.2.18 (tarball)

Applis spécifiques

(ce document est téléchargeable au format pdf dans la section download)

Présentation

LDAP est un protocole basé sur TCP/IP qui permet de partager des bases de données d'information sur un réseau interne (intranet) ou externe (internet). Ces bases de données sont appelées annuaire électronique (Directory en anglais), elles peuvent contenir tout type d'informations, des informations sur les personnes, à des données systèmes. Qui dit base de données, dit recherche, il est donc possible de faire des recherches dans la base en employant plusieurs critères, mais aussi bien sûr de la modifier, mais contrairement à un SGBD, un annuaire est très rapide en lecture, mais l'est beaucoup moins en écriture, en effet comme un annuaire est plutôt lu que modifier il a été optimisé pour la lecture et ne possède pas les mécanismes de transaction complexe que les SGBD possèdent pour traiter de gros volumes de données.
Le LDAP ou Lightweight Directory Access Protocol est la version TCP/IP du protocole DAP, ce dernier étant le protocole pour accéder au protocole OSI du service d'annuaire X500. Dans un premier temps LDAP s'est contenté d'être l'interface à des annuaires X500, mais maintenant LDAP peut gérer complètement les bases (standalone LDAP).

Si on rentre dans les détails, le protocole LDAP est du type client serveur, le serveur contient la base de données, et le client consulte la base de données, le protocole fournit les bases pour cette communication entre la client et le serveur (normalisée par l'IETF par la RFC2251), et les commandes nécessaires au client pour rechercher, créer, modifier ou effacer des données. LDAP est bien entendu sécurisé pour le transfert et l'accès aux des données, avec des outils de cryptage comme SSL et d'authentification.
Par ailleurs LDAP fournit des outils pour que les serveurs LDAP puissent communiquer entre eux, on a ainsi la possibilité de créer des serveurs miroirs qui pourront se synchroniser, ou de relier simplement les serveurs entre eux, les serveurs redirigeant automatiquement les requêtes qui ne les concernent pas.

Les exemples d'applications de LDAP sont nombreux:
- bases de données d'employés,
- bases de données de produits,
- bases de données pour certaines applis, exemple :
        * toutes les infos contenant les utilisateurs de votre réseau (mot de passe, shell, homedirectory, ...) peuvent être dans la base, on a ainsi beaucoup plus de possibilités qu'un simple fichier /etc/passwd, l'authentification peut donc utiliser LDAP plutôt que passwd ou shadow ou encore NIS. Vos utilisateurs pourront ainsi changer leur mot de passe et certains de leurs attributs à partir d'une interface web.
        * les préférences d'applis ou d'environnement (netscape, environnement graphique KDE, ...) sont sauvegardés dans la base, ainsi l'utilisateur peut passer d'une machine à une autre et retrouver ses préférences.

Cette page est une introduction à LDAP elle ne couvre pas certains aspects comme les liens avec d'autres bases (duplication, miroir, ...), la sécurité (access control, SSL, ...). Elle n'a seulement pour but de mettre en place un serveur LDAP simplement configuré pour que vous puissiez faie vos "premières armes" dans le domaine. Pour plus d'info reportez vous à l'excellente page de Laurent Mirtain .

Pour utiliser une base LDAP à partir de script PHP, voir ma page Apache .

Pour voir comment mettre en place un système d'authentification utilisateurs en utilsant LDAP à la manière de NIS voir mon autre page sur LDAP.
 

[Retour haut de la page ]

Format de la base et définitions

Le Directory Information Tree

Les LDAP standalone utilisent le format de base de donnéesLDBM, ce dernier utilise le modèle hiérarchique comme le système de fichiers UNIX, c'est à dire qu'il s'apparente à un arbre, qu'on appelle DIT (Directory Information Tree). Au sommet de cet arbre se trouve la racine ou suffixe et à chaque noeud de l'arborescence on a un DSE (Directory Service Entry) qui correspond à une entrée de l'annuaire. L'entrée située à la racine est appelé rootDSE (root Directory Specific Entry), qui décrit la structure de l'arborescence (le DIT) ainsi que son contenu.
Chaque entrée est connue de manière unique dans l'arborescence grâce à son dn (Distinguished Name). Le dn indique le chemin à parcourir pour en partant du sommet arriver à l'entrée correspondante. Par exemple pour identifier une personne, on part du pays (fr), puis le nom de domaine (kervao), le groupe de travail et enfin le nom de la personne, l'ensemble de ces paramètres est le dn qui identifie de manière unique une personne.
[Retour haut de la page ]

Les attributs

Chaque entrée peut être considérée comme un objet (au sens C++) possédant donc certains attributs, par exemple si une personne est une entrée, les attributs peuvent être, le nom, le prénom, l'âge, .... On peut aussi définir des attributs obligatoires et d'autres optionnels, en d'autres termes, les attributs obligatoires devront être renseignés mais pas forcément les optionnels. Il existe par ailleurs pour chaque DSE des attributs d'administration qui ne servent qu'au serveur.
[Retour haut de la page ]

Les classes d'objet

On regroupe les objets qui sont du même domaine dans une classe d'object, celle-ci est caractérisée par des attributs obligatoires ou optionnels et un type. Les types de classe d'objet sont:
- type structurel car elle contient des d'objets concrets de l'annuaire (personnes, groupes de personnes, ...),
- type auxiliaire, c'est des classes d'objets qu'on peut créer, pour rajouter des informations (attributs) supplémentaires à des classes d'objet de type structurel déjà existantes. En C++ on dira que la classe auxiliaire dérive d'une classe structurelle,
- type abstraite, c'est les classes d'objet qui existent par défaut et qui n'ont pas de signification concrète, par exemple la classe top est la classe d'objet générique, toutes les autres classes dérivent de cette classe.

Le principe est donc le même qu'en C++, on retrouve une structure arborescente, avec à la racine la classe top, toutes les autres classes d'objet dérivent de cette classe générique, chaque classe hérite des propriétés d'une classe père et possède des attributs supplémentaires par rapport à ce dernier.

Les schémas

Un schéma décrit toutes les règles qu'utilisent le serveur LDAP pour décrire les classes d'objets (attributs, syntaxe, ...).
[Retour haut de la page ]

Installation d'OpenLDAP

Présentation

Il existe de nombreux serveurs LDAP, nous utiliserons OpenLDAP qui comme son nom l'indique est sous licence GPL. Vous avez le choix sur une Mandrake entre la version 2.1.25 disponible sur les CD d'install de la Mandrake 10.0 ou de récupérer la dernière version stable 2.2.18 à l'URL http://www.openldap.org.  Je présente les deux installs sachant que ma préférence va vers la recompilation pour avoir une version optimisée et de plus plus récente.
L'installation par tarball crée des fichiers de conf dans /usr/local/etc/openldap , alors que l'installation rpm les crée dans /etc/openldap, dans la suite des opérations on notera cela (/usr/local/)etc/openldap/.
[Retour haut de la page ]

Installation par tarball

On vérifie d'abord qu' Openldap n'est pas déjà installé sur votre système en tapant :

rpm -qa | grep -i ldap

On supprime du système les packages contenus dans la liste avec la commande rpm -e nom-du-package (sauf libldap2 qui sert pour de nombreux packages).
Si pour des histoires de dépendance vous n'arrivez pas à tout supprimer ce n'est pas bien grave car par défaut le tarball et les packages mdk ne placent pas les fichiers au même endroit. Lors du lancement du daemon et des exécutables il faut juste faire attention d'appeler le bon exécutable (servez vous de la commande which nom-exe ).

L'archive à récupérer est  openldap-2.2.28.tgz qu'on décompressera en tapant :

tar xvfz openldap-2.2.28.tgz

Cela va nous créer un répertoire openldap-2.2.28. Avant d'aller plus loin il faudra installer (commande urpmi nom-package ) les packages suivants de la Mandrake 10.0

libgdbm2
libgdbm2-devel

En effet par défaut openldap utilise une base de donnée Berkeley dans sa version 4.2 qui est utilisée, comme la 10.0 ne propose que la 4.1, je me suis rabattu sur la base de donnée de type ldbm. Puis on tape successivement :

./configure --enable-crypt --disable-bdb --enable-ldbm

make depend

make

On peut tester maintenant que tout marche bien  en tapant :

cd tests
make

pour installer les binaires de ldap on tapera, en tant que root :

cd ..
make install

Les binaires sont installés par défaut dans /usr/local/sbin et /usr/local/libexec, les fichiers de config dans /usr/local/etc/openldap et les bases dans /usr/local/var/openldap-data. Les biblio vont se trouver sous /usr/local/lib, si ce n'est pas fait, rajouter ce chemin à la fin du fichier /etc/ld.so.conf et tapez

ldconfig

pour changer l'emplacement de tous ces fichiers taper:

configure -help

[Retour haut de la page ]

Installation par RPM

Il suffit d'installer (commande urpmi openldap) les packages suivants (dans l'ordre) :

libldap2-2.1.25-6mdk
openldap-2.1.25-6mdk
perl-ldap-0.31-2mdk
openldap-servers
-2.1.25-6mdk
openldap-clients-2.1.25-6mdk

Vous pouvez maintenant installer aussi le package php-ldap pour le support LDAP de PHP avec Apache.
 

[Retour haut de la page ]

Mettre en place son schéma d'annuaire

Mise en place des classes d'objet

Le fichier de conf slapd.conf fait appel à /usr/local/etc/openldap/schema/core.schema (/usr/share/openldap/schema/core.schema pour une install avec package) qui décrit les classes d'objet. Voilà un exemple avec la classe "person"

objectclass ( 2.5.6.6 NAME 'person'
        DESC 'RFC2256: a person'
        SUP top STRUCTURAL
        MUST ( sn $ cn )
        MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

MUST correspond au attributs obligatoires et MAY à ceux facultatifs
objectClass est le nom de la classe qui descend elle même de la classe top
sn correspond à surname (nom)
cn correspond à common name (prénom nom)
Je vous laisse déviner la signification des autres attributs.

On voit qu'il est nécessaire de fournir les attributs sn (surname) et cn (common name), sont facultatifs le mot de passe (userPassword), le numéro de téléphone (telephoneNumber ), les liens (seeAlso) et la description.

Les attributs sont définis dans le même fichier, la syntaxe est la suivante pour telephoneNumber par exemple :

attributetype ( 2.5.4.20 NAME 'telephoneNumber'
        DESC 'RFC2256: Telephone Number'
        EQUALITY telephoneNumberMatch
        SUBSTR telephoneNumberSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )

Je vous présenterai la syntaxe plus tard, on peut dans un premier temps se limiter aux attributs disponibles. Pour créer une classe d'objet breizhPerson dérivant de person, disposant de l'attribut obligatoire title en plus et des arguments facultatifs ou (groupe de travail) et l (localistation). On tapera dans le fichier core.schema juste après la définition de la classe person

objectclass ( 2.5.6.6.2 NAME 'breizhPerson' SUP person STRUCTURAL
    MUST ( title )
    MAY ( ou $ l ) )

Vous noterez le nombre 2.5.6.6.2, ce nombre doit être unique dans le fichier, il dérive directement du numéro de la classe objet person qui a pour numéro 2.5.6.6. Il est évident que comme breizhPerson dérive de person, les attributs sn et cn sont aussi obligatoires.

A noter qu'avec une installation avec package les classes "locales" peuvent être créées dans le fichier /etc/openldap/schema/local.schema
 

[Retour haut de la page ]

Choix du suffixe

Le rootDSE ou suffixe correspond à l'entrée tout en haut de l'arbre (DIT) de l'annuaire, on utilise généralement le nom de domaine, avec la syntaxe suivante  dc=kervao, dc=fr  pour le domaine kervao.fr (dc correspond à Domain Component).
[Retour haut de la page ]

Configuration du serveur LDAP

On va créer un annuaire LDAP pour votre domaine privé kervao.fr. On doit modifier les fichiers slapd.conf et ldap.conf se trouvant sous (/usr/local)/etc/openldap.Voilà pour le fichier de conf slapd.conf

Le fichier dans sa version tarball

# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.4 2000/08/26 17:06:18
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#

include     /usr/local/etc/openldap/schema/core.schema

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral   ldap://root.openldap.org
# le chemin est différent avec une install avec package

pidfile     /usr/local/var/slapd.pid
argsfile    /usr/local/var/slapd.args

# Load dynamic backend modules:
# modulepath    /usr/local/libexec/openldap
# moduleload    back_ldap.la
# moduleload    back_ldbm.la
# moduleload    back_passwd.la
# moduleload    back_shell.la

#######################################################################
# database definitions
#######################################################################

database        ldbm
suffix          "dc=kervao,dc=fr"
rootdn          "cn=Manager,dc=kervao,dc=fr"

#mot de passe en clair, on verra plus loin comment le crypter
rootpw          secret

# là où va se trouver la base ldap /var/lib/ldap dans le cas d'une install par package
directory   /usr/local/var/openldap-data

# Indices to maintain
index   objectClass eq

# Droits d'accès que j'ai rajoutés en plus
access to attr=userPassword
        by self write
        by anonymous auth
        by dn="cn=Manager,dc=kervao,dc=fr" write
        by * none

access to *
        by dn="cn=Manager,dc=kervao,dc=fr" write
        by * read


Le même fichier dans sa version RPM

# $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.
#
# Modified by Christian Zoffoli <czoffoli@linux-mandrake.com>
# Version 0.2
#

include /usr/share/openldap/schema/core.schema
include /usr/share/openldap/schema/cosine.schema
include /usr/share/openldap/schema/corba.schema
include /usr/share/openldap/schema/inetorgperson.schema
include /usr/share/openldap/schema/java.schema
include /usr/share/openldap/schema/krb5-kdc.schema
include /usr/share/openldap/schema/kerberosobject.schema
include /usr/share/openldap/schema/misc.schema
include /usr/share/openldap/schema/nis.schema
include /usr/share/openldap/schema/openldap.schema
include /usr/share/openldap/schema/autofs.schema
include /usr/share/openldap/schema/samba.schema
include /usr/share/openldap/schema/kolab.schema

#include /usr/share/openldap/schema/rfc822-MailMember.schema
#include /usr/share/openldap/schema/pilot.schema
#include /usr/share/openldap/schema/qmail.schema
#include /usr/share/openldap/schema/mull.schema
#include /usr/share/openldap/schema/netscape-profile.schema
#include /usr/share/openldap/schema/trust.schema
#include /usr/share/openldap/schema/dns.schema
#include /usr/share/openldap/schema/cron.schema

include /etc/openldap/schema/local.schema


# Define global ACLs to disable default read access.
include         /etc/openldap/slapd.access.conf


# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral       ldap://root.openldap.org

pidfile         /var/run/ldap/slapd.pid
argsfile        /var/run/ldap/slapd.args

modulepath      /usr/lib/openldap
#moduleload      back_dnssrv.la
#moduleload      back_ldap.la
#moduleload      back_meta.la
#moduleload      back_monitor.la
#moduleload      back_passwd.la
#moduleload      back_sql.la

# SASL config
#sasl-host ldap.example.com

# To allow TLS-enabled connections, create /etc/ssl/openldap/ldap.pem
# and uncomment the following lines.
#TLSRandFile            /dev/random
#TLSCipherSuite         HIGH:MEDIUM:+SSLv2
TLSCertificateFile      /etc/ssl/openldap/ldap.pem
TLSCertificateKeyFile   /etc/ssl/openldap/ldap.pem
#TLSCACertificatePath   /etc/ssl/openldap/
#TLSCACertificateFile    /etc/ssl/cacert.pem
TLSCACertificateFile    /etc/ssl/openldap/ldap.pem
#TLSVerifyClient never # ([never]|allow|try|demand)

# logging
loglevel 256

#######################################################################
# database definitions
#######################################################################

database        bdb
suffix          "dc=kervao,dc=fr"
#suffix         "o=My Organization Name,c=US"
rootdn          "cn=Manager,dc=kervao,dc=fr"
#rootdn         "cn=Manager,o=My Organization Name,c=US"

# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          secret
# rootpw                {crypt}ijFYNcSNctBYg

# The database directory MUST exist prior to running slapd AND
# should only be accessable by the slapd/tools. Mode 700 recommended.
directory       /var/lib/ldap

# Indices to maintain
#index  objectClass                             eq
index   objectClass,uid,uidNumber,gidNumber     eq
index   cn,mail,surname,givenname               eq,subinitial
# samba searches on sid
#index  sambaSID                                eq

# Basic ACL (deprecated in favour of ACLs in /etc/openldap/slapd.access.conf)
access to attr=userPassword
        by self write
        by anonymous auth
        by dn="cn=Manager,dc=kervao,dc=fr" write
        by * none

access to *
        by dn="cn=Manager,dc=kervao,dc=fr" write
        by * read

# ACL ensuring replicator has write access
#access to *
#       by group="cn=Replicator,ou=Group,dc=example,dc=com" write
#       by * read

# Replica configuration (if this server is a slave)
#updatedn        "cn=ldap-master.example.com,ou=Hosts,dc=example,dc=com"
#updateref       "ldap://ldap-master.example.com"

# Replication configuration (if this server is a master)
#replica host=ldap-slave1.example.com:389
#        binddn="cn=ldap-master.example.com,ou=Hosts,dc=example,dc=com"
#        bindmethod=simple credentials="mypassword"

# Uncomment to enable statistics gathering at basedn cn=monitor (load monitor
# module above too)
#database monitor

Attention vous devez vous assurer que le répertoire où se trouvera la base LDAP a été créé, par défaut c'est /usr/local/var/openldap-data mais vous pouvez très bien mettre /var/lib/ldap si ça vous chante.
Pour une install avec package il existe des lignes supplémentaires dans ce fichier, pensez à modifier les champs dc=example,dc=com en adaptant à votre domaine.

Le fichier ldap.conf peut être vide dans un premier temps voire inexistant.

Le mot de passe de l'administrateur est secret en clair, si ça ne vous convient pas et que vous voulez le mettre crypté, il faudra taper (exemple avec secret) :

slappasswd -v -s secret -h {CRYPT}

Voilà le résultat

{CRYPT}G.H5krNMMw0cc

A la place de

rootpw      secret

Dans slapd.conf, vous mettrez donc:

rootpw          {CRYPT}G.H5krNMMw0cc
 
 

[Retour haut de la page ]

Lancement du serveur

Pour une installation par RPM, vous allez retrouver un fichier de lancement ldap sous /etc/rc.d/init.d. Pour l'installation par tarball, voici un fichier ldap à placer sous /etc/rc.d/init.d, attention ce fichier utilise les chemins par défaut, vous devez le modifier si nécessaire et lui donner des droits d'exécution (755). Vous devez aussi modifier (non nécessaire pour installation par rpm) le fichier /etc/rc.d/init.d/functions et à la place de :

PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"

On mettra

PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/libexec"

pour que serveur LDAP soit lancé automatiquement à l'état de marche 3, 4 et 5 ( les deux types d'install) on tapera :

chkconfig --level 345 ldap on

Pour l'arrêter à l'état de marche 0, 1, 2 et 6, on tapera:

chkconfig --level 0126 ldap off

Au prochain reboot le serveur sera lancé automatiquement, pour éviter un reboot pour lancer le serveur, il suffit de taper :

/etc/rc.d/init.d/ldap start
 
 
 

[Retour haut de la page ]

Ajouter un enregistrement

Vous avez différent moyen d'ajouter des données à l'annuaire, pour une meilleure compréhension on va d'abord aborder la méthode manuelle. Pour ajouter des données au serveur LDAP vous devez vous fournir un fichier au format LDIF (pour LDAP Directory Interchange Format), le format est un format texte facilement lisible au contraire du format interne de l'annuaire. Voici un exemple de fichier LDIF, à noter que:
- chaque enregistrement dans le fichier est séparé du précédent et du suivant par une ligne vierge,
- les espaces sont pris en compte. ATTENTION, il est très important qu'il n'y ait aucun espace en fin de ligne. Dans ce cas vous risqueriez d'obtenir une erreur du style

ldap_add: Invalid syntax (21)
        additional info: objectClass: value #0 invalid per syntax

La syntaxe du format LDIF est la suivante:

dn: description du distinguished name
objetclass: classe d'objet d'origine
...
objetclass: classe d'objet dérivée
type attribut: valeur
...

On va par exemple utiliser la classe breizPerson définie plus haut pour décrire une nouvelle personne Veronique Hoarau qu'on va rajouter dans l'annuaire. Elle appartient au service (organizationalUnit) staff, ce même service appartenant à l'organisation kervao.fr
Soit le fichier entree.ldif

dn:     dc=kervao, dc=fr
objectClass: dcObject
objectClass:    organization
dc:     kervao
o:      kervao.fr

dn: ou=staff, dc=kervao, dc=fr
objectclass:    organizationalUnit
ou: staff

dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
objectclass: person
objectclass: breizhPerson
cn: Veronique Hoarau
sn: Hoarau
title: madame

Quelques commentaires, le premier groupe correspond à la définition de votre organisation, le deuxième à celui du groupe de travail (organizationalUnit) et le dernier à la personne. Celle-ci est définie par son dn (Distinguished Name), on part du sommet bz (suffixe du nom de domaine), puis le nom de domaine, le groupe de travail et enfin la personne. L'arbre (DIT) pourrait ressembler à ça:
 

                                                                                                                                  dc=fr
                                                                                                                            |
                                                                                                                     dc=kervao
                                                                                                                            |
                                                          ------------------------------------------------------------------------------------------------------------
                                                            |                                              |                                            |                                |
                                                        ou=staff                                ou=informatique                ou=production            ou=achat
                                                            |
               ------------------------------------------------------------------
                    |                                                                |
            cn=Veronique Hoarau                            cn=Olivier Hoarau

Au niveau de la définition de la personne:

objetclass: person définit la classe père de la classe breizPerson,
objetclass: breizPerson classe décrivant la personne,
cn et sn sont des attributs à renseigner obligatoirement,
title est un attribut obligatoire

On rajoutera l'enregistrement en utilisant la syntaxe suivante  (en tant que simple utilisateur):

ldapadd -x -D "description du dn de l'administrateur" -W -f nom-du-fichier-ldif

Exemple concret:

ldapadd -x  -D "cn=Manager, dc=kervao, dc=fr" -W -f entree.ldif
Enter LDAP Password: secret
adding new entry "dc=kervao, dc=fr"

adding new entry "ou=staff, dc=kervao, dc=fr"

adding new entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"

Pour rajouter par la suite un autre enregistement dans le groupe staff, il sera plus nécessaire de rajouter la définition du groupe et de l'organisation. Soit le fichier entree.ldif

dn: cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr
objectclass:    person
objectclass:    breizhPerson
cn: Olivier Hoarau
sn: Hoarau
title:   monsieur

On tape ensuite la commande:

ldapadd -x  -D "cn=Manager, dc=kervao, dc=fr" -W -f entree.ldif
Enter LDAP Password:
adding new entry "cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr"

[Retour haut de la page ]

Rechercher un enregistrement

On utilisera la fonction ldapsearch. Pour visualiser tout l'annuaire on peut taper :

ldapsearch -x -b 'dc=kervao, dc=fr' '(objectclass=*)'

Voilà le résultat

# extended LDIF
#
# LDAPv3
# filter: (objectclass=*)
# requesting: ALL
#

# kervao, fr
dn: dc=kervao, dc=fr
objectClass: dcObject
objectClass: organization
dc: kervao
o: kervao.fr

# staff, kervao, fr
dn: ou=staff, dc=kervao, dc=fr
objectClass: organizationalUnit
ou: staff

# Veronique Hoarau, staff, kervao, fr
dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
objectClass: person
objectClass: breizhPerson
cn: Veronique Hoarau
sn: Hoarau
title: madame

# Olivier Hoarau, staff, kervao, fr
dn: cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr
objectClass: person
objectClass: breizhPerson
cn: Olivier Hoarau
sn: Hoarau
title: monsieur

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 4

[Retour haut de la page ]

Modifier un enregistrement

Rajouter un attribut à un enregistrement

On va rajouter l'attribut facultatif location (l) à l'enregistrement Veronique Hoarau. On va créer un fichier modif.ldif contenant:

dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
add:    l
title: bureau36

On tape ensuite

ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
Enter LDAP Password:secret
modifying entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"

[Retour haut de la page ]

Modifier un attribut

On va modifier l'attribut titre (title) à l'enregistementVeronique Hoarau. On va créer un fichier modif.ldif contenant:

dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
changetype: modify
replace: title
title: mademoiselle

On tape ensuite

ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
Enter LDAP Password:secret
modifying entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"

[Retour haut de la page ]

Supprimer un attribut

On va supprimer l'attribut location (l) à l'enregistement Veronique Hoarau. On va créer un fichier modif.ldif contenant:

dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
delete: l

On tape ensuite

ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
Enter LDAP Password:secret
modifying entry cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr

[Retour haut de la page ]

Supprimer un enregistrement

Pour supprimer l'enregistrement Veronique hoarau, an va créer un fichier modif.ldif contenant

dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
changetype: delete

On tape ensuite:

ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
Enter LDAP Password:secret
deleting entry cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr

ATTENTION Vous ne pouvez pas supprimer un attribut obligatoire comme title pour la classe breizhPerson.
 
 
[Retour page d'accueil FUNIX]