Mise en place de OpenLDAP
>>> Debian 8.7.1 & OpenLDAP & phpldapadmin
Version PDF

Le but de cet article est de vous faire découvrir OpenLDAP. En commençant par vous expliquer comment il fonctionne. Puis comment l’installer. Et enfin comment l’administrer.
Pour nous aider dans cette dernière partie, j’utiliserai l’interface web phpldapadmin.


Sommaire :

I) Introduction
II) Mise en place
1) Installation et configuration du serveur WEB
2) Installation et configuration du DNS
III) Installation de OpenLDAP
1) Installation des paquets LDAP
2) Configuration LDAP
3) Test du serveur LDAP
IV) Installation de phpldapadmin
1) Installation
2) Configuration de Apache2
3) Configuration de phpldapadmin
4) Interface WEB
5) Création d’un compte
6) Création d’une Unité Organisationnelle
7) Création de groupes
8) Création d’utilisateurs
9) Importation d’utilisateurs
V) Scripts
1) Prérequis
2) Script pour générer un fichier adduser.ldif
3) Script pour générer un fichier deluser.ldif
VI) Quelques commandes LDAP
1) ldapsearch
2) ldapadd
3) ldapmodify
4) ldapdelete


I) Introduction

Haut de page

OpenLDAP est une implémentation libre du protocole LDAP maintenue par le projet OpenLDAP. OpenLDAP est un annuaire informatique qui fonctionne sur le modèle client/serveur. Il contient des informations de n’importe quelle nature qui sont rangées de manière hiérarchique. Pour bien comprendre le concept, il est souvent comparé aux pages jaunes, où le lecteur recherche un numéro de téléphone particulier : il va d’abord sélectionner la profession, puis la ville, puis le nom de l’entrée pour trouver finalement le numéro de téléphone. En pratique, dans un réseau informatique, il est utilisé pour enregistrer une grande quantité d’utilisateurs ou de services, parfois des centaines de milliers. Il permet d’organiser hiérarchiquement les utilisateurs par département, par lieu géographique ou par n’importe quel autre critère. C’est une alternative libre à Microsoft Active Directory.

Pour chaque donnée contenue dans l’annuaire il faut donc noter qui effectue les actions suivantes :
 Recherche : Une recherche s’effectue sur certains attributs. Pour chaque objet, dans chaque cas d’utilisation, il faudra donc noter les attributs sur lesquels la recherche s’effectue.
 Lecture : Là encore il faut tenir compte des attributs. Les cas d’utilisation devront contenir l’information « de quel attribut a besoin de lire telle personne sur tel objet. »
 Création : Lors du processus de création des objets dans l’annuaire, il faudra valider que la personne, ou l’application, qui créée un objet, a bien connaissance de toute l’information nécessaire. Il peut arriver que cela ne soit pas le cas. Par exemple, une personne du département ressources humaine ne pourra pas d’elle-même assigner un login à un utilisateur dans l’annuaire. Il faut prévoir un mécanisme, en dehors de l’annuaire, qui lui fournisse cette information qui se peut se révéler nécessaire dans certains cas.
 Modification : Dans l’écriture des cas d’utilisation comprenant des modifications, il est nécessaire de noter quels attributs sont modifiés, et de quel type de modifications il s’agit : ajout d’une valeur, retrait d’une valeur, modification de toutes les valeurs, etc.
 Suppression

Les données d’un annuaire sont organisées sous forme hiérarchique, en arbre. Concevoir l’arbre informationnel d’un annuaire c’est spécifier la forme de cet arbre, son organisation, comment les données vont y être nommées. L’objectif à cette étape est donc d’organiser les données pour leur :
 Consultation
 Mise à jour
 Duplication
 Répartition

Les arbres plats ont pour principal avantage que les recherches s’effectuent rapidement, parce que le serveur n’a pas à parcourir toutes les branches, et à faire une recherche par branche. Par ailleurs les arbres plats présentent beaucoup d’inconvénients :

Les collusions de RDN peuvent se produire fréquemment.
La mise en place de referral n’est pas possible (Le mécanisme de referral peut alors être remplacé par la mise en place d’un meta annuaire. Néanmoins un meta annuaire est beaucoup plus lourd à mettre en place.)
Sur ces points les arbres à fort branchage sont bien plus efficaces. Ils facilitent aussi la délégation. L’inconvénient des arbres à fort branchage apparaît essentiellement lorsque la structure de l’arbre reflète la structure de l’organisation, et que cette structure est amenée à être modifiée. Dans ce cas, les entrées de l’arbre vont elles aussi être amenées à changer de place et de DN, ce qui peut provoquer des problèmes de cohérences.

Il y a donc un certain équilibre à atteindre entre les deux types d’arbres. Les éléments à prendre en compte sont les suivants (4) :
 Le nombre d’entrées prévu et son évolution ?
 La nature (type d’objet) des entrées actuelles et futures ?
 Vaut-il mieux centraliser les données ou les distribuer ?
 Seront-elles administrées de manière centrale ou faudra-t-il déléguer une partie de la gestion ?
 La duplication est-elle prévue ?
 Quelles applications utiliseront l’annuaire et imposent-elles des contraintes particulières ?
 Quelles permissions seront mises en place ?

OpenLDAP contient :
 slapd : stand-alone LDAP daemon (server)
 libraries : implémentant le protocole LDAP, les outils et les paramètres.

Nous allons maintenant découvrir comment installer OpenLDAP sur un serveur Debian 8.7.1 ainsi que l’interface web phpldapadmin.
Pour avoir une installation digne de ce nom, je vais installer le serveur DNS et un serveur WEB. Le serveur DNS va permettre de résoudre le nom ldap.idum.eu. Le serveur Web va permettre de faire fonctionner l’interface web phpldapadmin.

Voici la configuration de mon LAB utilisé pour l’article :
 Machine virtuelle : Debian 8.7.1
 Hostname : deb-idum-lab2
 Adresse IP : 10.10.10.11/24

  • 2 unités d’organisations :
    • Utilisateurs
    • Groupes
  • 3 groupes :
    • Administrateurs
    • Webmasters
    • Utilisateurs
  • 3 Utilisateurs :
    • Vincent THYMME - Groupe : Utilisateurs
    • Paul HETTE - Groupe : Administrateurs
    • Jacques ADIT - Groupe : Webmasters

II) Mise en place

Haut de page

Commençons l’installation.

1) Installation et configuration du serveur WEB

 Connectez-vous sur le serveur en root.
 Installez les paquets suivants :

aptitude install apache2 apache2-doc php5

 Votre serveur web fonctionne, laissez la configuration par défaut dans un premier temps.

2) Installation et configuration du DNS

 Installer les paquets suivants :

aptitude install bind9 bind9-doc

 On copie le fichier "db.local" dans le dossier "/var/cache/bind" afin de nous donner une base pour notre fichier de zone directe "idum.eu".

cp db.local /var/cache/bind/db.idum.eu

 On copie le fichier "db.255" dans le dossier "/var/cache/bind" afin de nous donner une base pour notre fichier de zone inverse "10.10.10.in-addr.arapa".

cp db.255 /var/cache/bind/db.10.10.10.in-addr.arpa

 On édite notre fichier de zone directe "idum.eu".

vim /var/cache/bind/db.idum.eu

 Modifiez le fichier comme ci-dessous :

;
; zone directe idum.eu
;
$TTL    604800
@       IN      SOA     deb-idum-lab2.idum.eu. root.idum.eu. (
                        01042017        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      deb-idum-lab2.idum.eu.
@       IN      A       10.10.10.11
deb-idum-lab2   IN      A       10.10.10.11
ldap    IN      CNAME   deb-idum-lab2
www     IN      CNAME   deb-idum-lab2

 On édite notre fichier de zone directe "db.10.10.10.in-addr.arpa".

vim /var/cache/bind/db.10.10.10.in-addr.arpa

 Modifiez le fichier comme ci-dessous :

; Zone inverse du Network 10.10.10.0/24
;
$TTL    604800
@       IN      SOA     deb-idum-lab2.idum.eu. root.idum.eu. (
                        20170401        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      deb-idum-lab2.idum.eu.
11      IN      PTR     deb-idum-lab2.idum.eu.

 On édite ensuite le fichier "named.conf.local" afin de déclarer nos deux zones.

vim /etc/bind/named.conf.local

 Ajoutez les lignes suivantes :

zone "idum.eu" {
        type master;
        file "db.idum.eu";
};

zone "10.10.10.in-addr.arpa" {
        type master;
        file "db.10.10.10.in-addr.arpa";
};

 Redémarrer le service "bind9".

service bind9 restart

 Pour finir, modifiez votre fichier "resolv.conf".

vim /etc/resolv.conf

 Modifiez les lignes pour avoir :

domain idum.eu
search idum.eu
nameserver 127.0.0.1

 Testez la résolution de deb-idum-lab2 :

nslookup deb-idum-lab2
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   deb-idum-lab2.idum.eu
Address: 10.10.10.11

 Testez la résolution de ldap :

nslookup ldap
Server:         127.0.0.1
Address:        127.0.0.1#53

ldap.idum.eu    canonical name = deb-idum-lab2.idum.eu.
Name:   deb-idum-lab2.idum.eu
Address: 10.10.10.11

 Dernier test, testez la résolution inverse :

nslookup 10.10.10.11
Server:         127.0.0.1
Address:        127.0.0.1#53

11.10.10.10.in-addr.arpa        name = deb-idum-lab2.idum.eu.

Votre serveur DNS fonctionne.

III) Installation de OpenLDAP

Haut de page

1) Installation des paquets LDAP

 Installez les paquets suivants :

aptitude install slapd ldap-utils

 Au cours de l’installation, vous devrez définir le mot de passe de l’administrateur.

 Puis confirmer le mot de passe.

2) Configuration LDAP

 Editez le fichier "ldap.conf".

vim /etc/ldap/ldap.conf

 Modifiez les lignes "BASE" et "URI".

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE    dc=idum,dc=eu
URI     ldap://ldap.idum.eu ldap://ldap.idum.eu:666 ldap://127.0.0.1

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

 Tapez la commande suivante pour reconfigurer le paquet "slapd".

dpkg-reconfigure slapd

 Lors de la première question "Voulez-vous omettre la configuration d’OpenLDAP répondez "Non".

 Saisissez votre nom de domaine.

 Saisissez le nom de l’entité correspondant à la base de votre domaine.

 Définissez de nouveau le mot de passe de l’administrateur LDAP.

 Confirmer le mot de passe.

 Sélectionnez le type "MDB" pour la base de données.

 Choisissez ensuite de ne pas supprimer la base de données.

 Choisissez de déplacer l’ancienne base de données.

 Choisissez de ne pas activer le protocole LDAPv2.

 Redémarrez le service "slapd".

service slapd restart

 Votre serveur LDAP doit normalement fonctionner.

3) Test du serveur LDAP

Le serveur étant configuré, tapez la commande ci-dessous pour vérifier que LDAP est bien actif.

ldapsearch -x

 Vous devez obtenir ceci :

# extended LDIF
#
# LDAPv3
# base <dc=idum,dc=eu> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# idum.eu
dn: dc=idum,dc=eu
objectClass: top
objectClass: dcObject
objectClass: organization
o: idum.eu
dc: idum

# admin, idum.eu
dn: cn=admin,dc=idum,dc=eu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

IV) Installation de phpldapadmin

Haut de page

L’administration de OpenLDAP en ligne de commande est assez difficile, "phpldapadmin" est une interface qui permet de simplifier l’administration.

1) Installation

 Pour installer "phpldapadmin", tapez la commande ci-dessous :

aptitude install phpldapadmin

2) Configuration de Apache2

Afin d’activer l’interface web, vous avez 2 solutions :
 En utilisant un lien symbolique (méthode rapide)
 En créant un site web (méthode plus sécurisé)

a) 1ère méthode

 Créer le lien symbolique en tapant la commande ci-dessous.

ln -s /usr/share/phpldapadmin/ /var/www/html/phpldapadmin

b) 2ème méthode

 Tapez la commande ci-dessous afin de créer une copie du fichier "000-default.conf".

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/phpldapadmin.conf

 Éditez ensuite le fichier.

vim /etc/apache2/sites-available/phpldapadmin.conf

 Modifiez les lignes suivantes :

        ServerName ldap.idum.eu

        ServerAdmin webmaster@idum.eu
        DocumentRoot /usr/share/phpldapadmin/

 Ajoutez les lignes suivantes en dessous de la ligne "DocumentRoot".

        <Directory /usr/share/phpldapadmin/>
                AllowOverride None
                Require all granted
                Options -Indexes -FollowSymlinks
        </Directory>

 Tapez la commande suivante pour activer le site.

a2ensite phpldapadmin.conf

 Vous devez obtenir ceci :

Enabling site phpldapadmin.
To activate the new configuration, you need to run:
  service apache2 reload

 Comme demandé, relancez le service "apache2".

service apache2 reload

3) Configuration de phpldapadmin

 Éditez le fichier config.php

vim /etc/phpldapadmin/config.php

 Commencez par modifier la ligne "timezone", pour définir le timezone de "Europe/Paris" :

$config->custom->appearance['timezone'] = 'Europe/Paris';

 Modifiez la ligne ci-dessous qui correspond au nom du serveur (description du serveur) :

$servers->setValue('server','name','LDAP Idum');

 Si votre OpenLDAP est sur un serveur diffèrent que le serveur "phpldapadmin" alors définissez l’adresse IP du serveur LDAP :

$servers->setValue('server','host','127.0.0.1');

 Définissez le nom du domaine :

$servers->setValue('server','base',array('dc=idum,dc=eu'));

 Définissez un utilisateur avec des droits admin de OpenLDAP :

$servers->setValue('login','bind_id','cn=admin,dc=idum,dc=eu');

 Relancez le serveur apache2 :

service apache2 reload

4) Interface WEB

 Si vous avez utilisé la 1ère méthode, tapez l’adresse suivante dans votre navigateur :

http://10.10.10.11/phpldapadmin

 Si vous avez utilisé la 2ème méthode, tapez l’adresse suivante dans votre navigateur :

http://ldap.idum.eu

 Vous devez obtenir la page ci-dessous. Cliquez sur le bouton "connexion" :

 Saisissez le mot de passe de l’utilisateur "admin" saisie précédemment lors de l’installation.

5) Compte manager

Il est toujours utile d’avoir plusieurs comptes pour se connecter. Je vous propose donc de créer un deuxième compte admin que nous nommerons "manager".

 Développez l’arborescence

 Cliquez sur "cn=admin".

 Cliquez sur "Copier ou déplacer cette entrée".

 Saisissez le nom "cn=manager,dc=idum,dc=eu", puis cliquez sur "Copier".

 Saisissez le mot de passe, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

6) Création d’une Unité Organisationnelle

Nous allons créer 2 unités d’organisation :

  • Groupes
  • Utilisateurs

 Cliquez sur "Créer une nouvelle entrée ici".

 Sélectionnez "Générique : Unité Organisationnelle".

 Saisissez le nom de l’unité organisationnelle, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

 Cliquez sur "Créer une nouvelle entrée ici".

 Sélectionnez "Générique : Unité Organisationnelle".

 Saisissez le nom de l’unité organisationnelle, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

7) Création de groupes

Comme indiqué dans l’introduction nous allons créer 3 groupes :

  • Administrateurs
  • Webmasters
  • Utilisateurs

 Cliquez sur "ou=Groupes".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Groupe Posix".

 Saisissez le nom du groupe, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

 Cliquez sur "ou=Groupes".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Groupe Posix".

 Saisissez le nom du groupe, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

 Cliquez sur "ou=Groupes".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Groupe Posix".

 Saisissez le nom du groupe, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

8) Création d’utilisateurs

Nous allons maintenant créer manuellement 3 utilisateurs :

  • Vincent THYMME - appartenant au groupe : Utilisateurs
  • Paul HETTE - appartenant au groupe : Administrateurs
  • Jacques ADIT - appartenant au groupe : Webmasters

 Cliquez sur "ou=Utilisateurs".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Compte Utilisateur".

 Saisissez les différentes informations, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

 Cliquez sur "ou=Utilisateurs".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Compte Utilisateur".

 Saisissez les différentes informations, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

 Cliquez sur "ou=Utilisateurs".

 Cliquez sur "Créer une sous-entrée".

 Sélectionnez "Générique : Compte Utilisateur".

 Saisissez les différentes informations, puis cliquez sur "Créer un objet".

 Cliquez sur "Valider".

9) Importation d’utilisateurs

La méthode du chapitre précèdent pour ajouter des utilisateurs est bien pour du cas par cas, mais lors d’un ajout en masse ce n’est pas pratique. Avec "phpldapadmin" vous avez la possibilité d’importer un fichier au format LDIF.

Dans le chapitre suivant j’expliquerai comment générer le fichier LDIF.

 Cliquez sur "importer".

 Sélectionnez votre fichier en cliquant sur "Choisissez un fichier" où copier le contenu de votre fichier dans l’encadrer.
 Puis cliquez sur le bouton "Procéder >>".

 Vous pouvez observer que l’import à fonctionner en vérifiant le nombre d’utilisateurs avant et après l’import.

V) Script

Haut de page

1) Prérequis

 Commencez par créer un répertoire sur votre serveur :

mkdir Generateur_LDIF
cd ./Generateur_LDIF

 Téléchargez ensuite les deux scripts que j’ai créés :

wget http://idum.eu/Telechargements/Scripts/article_326/gen-adduser-ldif.sh
wget http://idum.eu/Telechargements/Scripts/article_326/gen-deluser-ldif.sh

 Vous devez maintenant déposer votre fichier "liste de noms" dans le répertoire. Votre fichier doit être un fichier CSV avec séparation point-virgule. Une ligne par personne. Respectant le schéma ci-dessous :

  • ID ;Prenom ;Nom ;UserID ;

 Voici un exemple de mon fichier liste de noms.csv :

1;Jesper;Gauvin;jgauvin
2;Romaine;Authier;rauthier
3;Agrican;Auclair;aauclair
4;Paul;Daoust;pdaoust
5;Madeleine;Latourelle;mlatourelle
6;Michèle;Pelletier;mpelletier
7;Calandre;Petit;cpetit
8;Scoville;Lafrenière;slafrenière
9;Belisarda;Chauvin;bchauvin

 Vous pouvez télécharger le fichier que j’ai utilisé comme exemple :

wget http://idum.eu/Telechargements/Scripts/article_326/listedenoms.csv

Voilà vous êtes prêts.

2) Script pour générer un fichier adduser.ldif

Nous voulons générer un fichier LDIF pour ajouter des utilisateurs en masse dans OpenLDAP.

Avant de commencer à jouer avec le script, voici à quoi ressemble un fichier LDIF compatible avec l’import de "phpldapadmin" :

dn: cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu
cn: Jesper GAUVIN
gidnumber: 502
givenname: Jesper
homedirectory: /home/users/jgauvin
mail: jgauvin@idum.eu
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
loginshell: /bin/sh
sn: GAUVIN
uid: jgauvin
uidnumber: 10001
userpassword: {MD5}7Dmb674iW1CvQotyN9XTSw==

dn: cn=Romaine AUTHIER,ou=Utilisateurs,dc=idum,dc=eu
cn: Romaine AUTHIER
gidnumber: 502
givenname: Romaine
homedirectory: /home/users/rauthier
mail: rauthier@idum.eu
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
loginshell: /bin/sh
sn: AUTHIER
uid: rauthier
uidnumber: 10002
userpassword: {MD5}7Dmb674iW1CvQotyN9XTSw==

dn: cn=Agrican AUCLAIR,ou=Utilisateurs,dc=idum,dc=eu
cn: Agrican AUCLAIR
gidnumber: 502
givenname: Agrican
homedirectory: /home/users/aauclair
mail: aauclair@idum.eu
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
loginshell: /bin/sh
sn: AUCLAIR
uid: aauclair
uidnumber: 10003
userpassword: {MD5}7Dmb674iW1CvQotyN9XTSw==

Maintenant que nous avons vu le modèle, exécutez le script.

 Dans le répertoire "Generateur_LDIF" tapez la commande suivante pour exécuter le script :

bash gen-adduser-ldif.sh

 Chaque utilisateur doit avoir un uidnumber unique, le script vous demande s’il doit commencer le compteur à "10 000" où si vous souhaitez taper une valeur.

Voulez-vous commencer le compteur UID à '10 000' ? (Y/N)

y

 Pour chaque utilisateur, vous devez définir un shell par défaut. Le script vous demande si vous voulez utiliser "/bin/sh", sinon tapez le shell que vous souhaitez utiliser :

Votre shell est '/bin/sh' ? (Y/N)

y

 Pour chaque utilisateur, vous devez définir un répertoire personnel. Le script vous demande si les répertoires personnels seront stockés dans "/home/users/NOM_DE_L UTILISATEUR" :

Le chemin des répertoires personnels se trouve dans '/home/users/' ? (Y/N)

y

 Le script va générer un mot de passe pour tous les utilisateurs, souhaitez-vous utiliser le mot de passe "password-NOM_DE_L UTILISATEUR". Sinon le script peut vous propose de générer le même mot de passe pour tous les utilisateurs :

Voulez-vous utilisez le mot de passe 'password-username' ? (Y/N):

y

 Définissez le groupe ID (GID) auquel les utilisateurs seront rattachés :

Definissez le Group ID :

502

 Définissez le domaine :

Definissez le domaine :

idum.eu

 Saisissez le nom de votre fichier liste de noms.csv :

Votre fichier doit etre un fichier csv avec séparation point-virgule.
Une ligne par personne respectant le schema ci-dessous :
ID;Prenom;Nom;UserID;
Comment ce nomme votre fichier liste de noms :

listedenoms.csv

 Tapez la commande suivante pour voir si le fichier est bien généré :

cat addusers-20170412.ldif

Vous avez plus qu’à importer votre fichier avec "phpldapadmin" comme indiqué dans le chapitre III.9).

3) Script pour générer un fichier deluser.ldif

Nous voulons générer un fichier LDIF pour supprimer des utilisateurs en masse dans OpenLDAP.

Contrairement au fichier ajout, celui-ci ne peut pas être utilisé avec "phpldapadmin", j’expliquerai dans le prochain chapitre comment supprimer avec la commande "ldapdelete".

Le fichier que nous souhaitons générer doit avoir cette syntaxe :

cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu
cn=Romaine AUTHIER,ou=Utilisateurs,dc=idum,dc=eu
cn=Agrican AUCLAIR,ou=Utilisateurs,dc=idum,dc=eu
cn=Paul DAOUST,ou=Utilisateurs,dc=idum,dc=eu

Dans le répertoire "Generateur_LDIF", tapez la commande suivante pour exécuter le script :

bash gen-deluser-ldif.sh

 Définissez le domaine :

Definissez le domaine :

idum.eu

 Saisissez le nom de votre fichier liste de "noms.csv" :

Votre fichier doit etre un fichier csv avec séparation point-virgule.
Une ligne par personne respectant le schema ci-dessous :
ID;Prenom;Nom;UserID;
Comment ce nomme votre fichier liste de noms :

listedenoms.csv

 Tapez la commande suivante pour voir si le fichier est bien généré :

cat addusers-20170412.ldif

VI) Quelques commandes LDAP

Haut de page

1) ldapsearch

La commande "ldapsearch" vous permet de faire des recherches et de vérifier le bon fonctionnement de OpenLDAP.

a) Tout afficher

 Pour vérifier que OpenLDAP fonctionne, tapez l’une des commandes suivantes :

ldapsearch -x -H ldap:/// -D "cn=admin,dc=idum,dc=eu" -W
ldapsearch -v -H ldap:/// -D "cn=admin,dc=idum,dc=eu" -W "objectClass=*"
ldapsearch -x

 Vous devez obtenir ceci :

ldapsearch -x -H ldap:/// -D "cn=admin,dc=idum,dc=eu" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=idum,dc=eu> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# idum.eu
dn: dc=idum,dc=eu
objectClass: top
objectClass: dcObject
objectClass: organization
o: idum.eu
dc: idum

# admin, idum.eu
dn: cn=admin,dc=idum,dc=eu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9N0NRYmVlMGFWQXBuTnVRcWZJblJXdVNCSEd0ZjZZSXo=

# manager, idum.eu
dn: cn=manager,dc=idum,dc=eu
cn: manager
description: LDAP administrator
objectClass: simpleSecurityObject
objectClass: organizationalRole
objectClass: top
userPassword:: e1NTSEF9SmhFaXAxQlZEd1Yxa01UZFUvVm9VV1JUV2JJLy9OcWo=

# Utilisateurs, idum.eu
dn: ou=Utilisateurs,dc=idum,dc=eu
objectClass: organizationalUnit
objectClass: top
ou: Utilisateurs

# Groupes, idum.eu
dn: ou=Groupes,dc=idum,dc=eu
objectClass: organizationalUnit
objectClass: top
ou: Groupes

# Administrateurs, Groupes, idum.eu
dn: cn=Administrateurs,ou=Groupes,dc=idum,dc=eu
gidNumber: 500
cn: Administrateurs
objectClass: posixGroup
objectClass: top

# Webmasters, Groupes, idum.eu
dn: cn=Webmasters,ou=Groupes,dc=idum,dc=eu
gidNumber: 501
cn: Webmasters
objectClass: posixGroup
objectClass: top

# Utilisateurs, Groupes, idum.eu
dn: cn=Utilisateurs,ou=Groupes,dc=idum,dc=eu
gidNumber: 502
cn: Utilisateurs
objectClass: posixGroup
objectClass: top

# Vincent THYMME, Utilisateurs, idum.eu
dn: cn=Vincent THYMME,ou=Utilisateurs,dc=idum,dc=eu
cn: Vincent THYMME
givenName: Vincent
gidNumber: 502
homeDirectory: /home/users/vthymme
sn: THYMME
loginShell: /bin/sh
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: e01ENX1rQUZRbUR6U1Q3RFdsajk5S09GL2NnPT0=
uidNumber: 1000
uid: vthymme
mail: vthymme@idum.eu

# Paul HETTE, Utilisateurs, idum.eu
dn: cn=Paul HETTE,ou=Utilisateurs,dc=idum,dc=eu
cn: Paul HETTE
givenName: Paul
gidNumber: 500
homeDirectory: /home/users/phette
sn: HETTE
loginShell: /bin/sh
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: e01ENX1rQUZRbUR6U1Q3RFdsajk5S09GL2NnPT0=
uidNumber: 1001
uid: phette

# Jacques ADIT, Utilisateurs, idum.eu
dn: cn=Jacques ADIT,ou=Utilisateurs,dc=idum,dc=eu
cn: Jacques ADIT
givenName: Jacques
gidNumber: 501
homeDirectory: /home/users/jadit
sn: ADIT
loginShell: /bin/sh
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: e01ENX1rQUZRbUR6U1Q3RFdsajk5S09GL2NnPT0=
uidNumber: 1002
uid: jadit

# Compta, Groupes, idum.eu
dn: cn=Compta,ou=Groupes,dc=idum,dc=eu
objectClass: top
objectClass: posixGroup
gidNumber: 503
cn: Compta
memberUid: jgauvin
memberUid: aclavette

# Ordinateurs, idum.eu
dn: ou=Ordinateurs,dc=idum,dc=eu
objectClass: top
objectClass: organizationalUnit
ou: ordinateurs

# search result
search: 2
result: 0 Success

# numResponses: 14
# numEntries: 13

b) Rechercher un utilisateur

 Nous souhaitons rechercher l’utilisateur "Jacques ADIT" afin de vérifier qu’il est bien présent dans la base et pour connaitre son uidnumber.

ldapsearch -v -H ldap:/// -D "cn=admin,dc=idum,dc=eu" -W -LLL "cn=Jacques ADIT" cn sn uid uidnumber

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
filter: cn=Jacques ADIT
requesting: cn sn uid uidnumber
dn: cn=Jacques ADIT,ou=Utilisateurs,dc=idum,dc=eu
cn: Jacques ADIT
sn: ADIT
uidNumber: 1002
uid: jadit

2) ldapadd

La commande "ldapadd" permet d’ajouter une ou des entrée(s) dans OpenLDAP.

a) Ajout d’utilisateur

 Pour ajouter un utilisateur, vous devez créer un fichier "user.ldif" comme ceci :

vim user.ldif

 Ajoutez ensuite les informations suivantes :

dn: cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu
cn: Jesper GAUVIN
gidnumber: 502
givenname: Jesper
homedirectory: /home/users/jgauvin
mail: jgauvin@idum.eu
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
loginshell: /bin/sh
sn: GAUVIN
uid: jgauvin
uidnumber: 10001
userpassword: {MD5}7Dmb674iW1CvQotyN9XTSw==

 Ensuite tapez la commande suivante pour ajouter l’utilisateur :

ldapadd -v -x -H ldap:/// -W -D "cn=admin,dc=idum,dc=eu" -f user.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
add cn:
        Jesper GAUVIN
add gidnumber:
        502
add givenname:
        Jesper
add homedirectory:
        /home/users/jgauvin
add mail:
        jgauvin@idum.eu
add objectclass:
        inetOrgPerson
        posixAccount
        top
add loginshell:
        /bin/sh
add sn:
        GAUVIN
add uid:
        jgauvin
add uidnumber:
        10001
add userpassword:
        {MD5}7Dmb674iW1CvQotyN9XTSw==
adding new entry "cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu"
modify complete

 Voilà votre utilisateur est ajouté.
 Précédemment nous avons créé un fichier contenant une liste d’utilisateur. Pour l’ajouter il vous suffit d’utiliser la même commande.

b) Ajout de groupe

 Pour ajouter un groupe, vous devez créer un fichier "groupe.ldif" comme ceci :

vim groupe.ldif

 Ajoutez ensuite les informations suivantes :

dn: cn=Compta,ou=Groupes,dc=idum,dc=eu
objectClass: top
objectClass: posixGroup
gidNumber: 503

 Ensuite tapez la commande suivante :

ldapadd -v -x -H ldap:/// -W -D "cn=admin,dc=idum,dc=eu" -f groupe.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
add objectClass:
        top
        posixGroup
add gidNumber:
        503
adding new entry "cn=Compta,ou=Groupes,dc=idum,dc=eu"
modify complete

 Votre nouveau groupe est ajouté.

c) Ajout d’une Unité Organisationnelle

 Pour ajouter une Unité Organisationnelle, vous devez créer un fichier "ou.ldif" comme ceci :

vim ou.ldif

 Ajoutez ensuite les informations suivantes :

dn: ou=Ordinateurs,dc=idum,dc=eu
objectClass: top
objectClass: organizationalUnit
ou: ordinateurs

 Ensuite tapez la commande suivante :

ldapadd -v -x -H ldap:/// -W -D "cn=admin,dc=idum,dc=eu" -f ou.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
add objectClass:
        top
        organizationalUnit
add ou:
        ordinateurs
adding new entry "ou=Ordinateurs,dc=idum,dc=eu"
modify complete

 Votre nouvelle Unité Organisationnelle est ajoutée.

3) ldapmodify

a) Ajout d’un utilisateur dans un groupe

 Pour ajouter un utilisateur dans un groupe, vous devez utiliser la commande "ldapmodify" et créer un fichier "modif-user.ldif".

  • Nous souhaitons ajouter l’utilisateur "aclavette" au groupe "Compta".
vim modif-user.ldif

 Ajoutez ensuite les informations suivantes :

dn: cn=Compta,ou=Groupes,dc=idum,dc=eu
changetype: modify
add: memberuid
memberuid: aclavette

 Ensuite tapez la commande suivante :

ldapmodify -v -x -H ldap:/// -W -D "cn=admin,dc=idum,dc=eu" -f modif-user.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
add memberuid:
        jgauvin
modifying entry "cn=Compta,ou=Groupes,dc=idum,dc=eu"
modify complete

b) Modification d’un utilisateur

 Pour modifier par exemple le nom d’un utilisateur, créer un fichier "modif-user2.ldif".

  • Nous voulons modifier le sn de l’utilisateur "Jesper GAUVIN" par la valeur "EASTWOOD".
vim modif-user2.ldif

 Ajoutez ensuite les informations suivantes :

dn: cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu
changetype: modify
replace: sn
sn: EASTWOOD

 Ensuite tapez la commande suivante :

ldapmodify -v -x -H ldap:/// -W -D "cn=admin,dc=idum,dc=eu" -f modif-user2.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
replace sn:
        EASTWOOD
modifying entry "cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu"
modify complete

4) ldapdelete

 Pour supprimer un utilisateur, tapez la commande suivante :

ldapdelete -v -H ldap:/// -D "cn=admin,dc=idum,dc=eu" -W  "cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu"

 Vous devez obtenir ceci :

ldap_initialize( ldap://:389/??base )
Enter LDAP Password:
deleting entry "cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu"

 Pour supprimer plusieurs utilisateurs via un fichier "deluser.ldif". Tapez la commande suivante :

ldapdelete -v -c -H ldapi:/// -D "cn=admin,dc=idum,dc=eu" -W -f delusers-20170412.ldif

 Vous devez obtenir ceci :

ldap_initialize( ldapi:///??base )
Enter LDAP Password:
deleting entry "cn=Jesper GAUVIN,ou=Utilisateurs,dc=idum,dc=eu"
ldap_delete: No such object (32)
        matched DN: ou=Utilisateurs,dc=idum,dc=eu
deleting entry "cn=Romaine AUTHIER,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Agrican AUCLAIR,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Paul DAOUST,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Madeleine LATOURELLE,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Michele PELLETIER,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Calandre PETIT,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Scoville LAFRENIERE,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Belisarda CHAUVIN,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Iven GILBERT,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Renee CHANDONNET,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Fleurette TREPANIER,ou=Utilisateurs,dc=idum,dc=eu"
....
....
....
deleting entry "cn=Caresse BOUTOT,ou=Utilisateurs,dc=idum,dc=eu"
ldap_delete: No such object (32)
        matched DN: ou=Utilisateurs,dc=idum,dc=eu
deleting entry "cn=Lirienne CUILLERIER,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Andree CHARLEBOIS,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Leon RENE,ou=Utilisateurs,dc=idum,dc=eu"
ldap_delete: No such object (32)
        matched DN: ou=Utilisateurs,dc=idum,dc=eu
deleting entry "cn=Babette DE LAUNAY,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Sumner PERILLARD,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Delit BERTHELETTE,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Bradamate PAULET,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Melisande VERREAU,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Aubine CAOUETTE,ou=Utilisateurs,dc=idum,dc=eu"
deleting entry "cn=Berangaria SOUCY,ou=Utilisateurs,dc=idum,dc=eu"
ldap_delete: No such object (32)
        matched DN: ou=Utilisateurs,dc=idum,dc=eu
deleting entry "cn=Patrice LEMELIN,ou=Utilisateurs,dc=idum,dc=eu"
 
 
 
 
 
Commentaires :