TABLE DES MATIERES
1.Présentation du projet
1.1 Objectif du projet
1.2 Le protocole LDAP
1.2.1 Introduction
1.2.2 Le Directory Information Tree
1.2.3 Les concepts de LDAP
1.2.4 Le protocole définit
1.2.5 Les Attributs
1.3 Pré-requis
1.4 Fonctionnement du projet
2 Réalisation du Projet
2.1 Configuration de l’annuaire LDAP
2.2 Configuration de samba
1 Présentation du projet
1.1 Objectif du projet :
L’objectif du projet est de réalisé un annuaire sur le serveur LDAP qui permet de se connecté a travers une authentification sur un système d’ exploitation Windows ou Linux grâce au service Samba.
1.2 Le protocole LDAP
1.2.1 Introduction :
LDAP est un protocole qui fournit à l'utilisateur des commandes pour se connecter ou se déconnecter, pour rechercher, comparer, créer, modifier ou effacer des entrées des services d'annuaire. Il a cependant évolué pour représenter une norme pour les systèmes d'annuaires, incluant un modèle de données, un modèle de nommage, un modèle fonctionnel basé sur le protocole LDAP, un modèle de sécurité et un modèle de réplication.
1.2.2 Le Directory Information Tree :
Le Directory Information Tree, c’est une structure arborescente dont chacun des nœuds est constitué d'attributs associés à leurs valeurs. Les serveurs LDAP sont conçus pour stocker une grande quantité de données mais de faible volume et pour accéder en lecture très rapidement à celles-ci grâce au modèle hiérarchique.

1.2.3 Les concepts de LDAP :
LDAP est un protocole d'annuaire standard et extensible. Il fournit :
• le protocole d’accès — comment accéder à l’information contenue dans l’annuaire,
• un modèle d’information — le type d’informations contenues dans l’annuaire,
• un modèle de nommage — comment l’information est organisée et référencée,
• un modèle fonctionnel — comment on accède et met à jour l’information,
• un modèle de sécurité — comment données et accès sont protégés,
• un modèle de duplication — comment la base est répartie entre serveurs,
• des API — pour développer des applications clientes,
• LDIF — un format d’échange de données.
1.2.4 Le protocole définit :
Le protocole définit :
• Comment s’établit la communication client-serveur :
- commandes pour se connecter ou se déconnecter, pour rechercher, comparer, créer, modifier ou effacer des entrées.
• Comment s’établit la communication serveur-serveur :
- échanger leur contenu et le synchroniser (replication service)
- créer des liens permettant de relier des annuaires les uns aux autres (referral service).
• Le format de transport de données :
- pas l’ASCII (comme pour http, smtp…) mais le Basic Encoding Rules (BER), sous une forme allégée (appelée LBER : Lightweight BER)
• Les mécanismes de sécurité :
- méthodes de chiffrement et d’authentification
- mécanismes de règles d’accès aux données.
• Les opérations de base:
- interrogation : search, compare
- mise à jour : add, delete, modify, rename
- connexion au service : bind, unbind, abandon
1.2.5 Les Attributs :
Un type d’attribut (ou attribut) est caractérisé par :
• Un nom, qui l’identifie
• Un Object Identifier (OID), qui l’identifie également
• S’il est mono ou multi-valué
• Une syntaxe et des règles de comparaison (matching rules)
• Un format ou une limite de taille de valeur qui lui est associée
type d’attribut | valeur d’attribut |
cn: | Ibrahim |
uid: | Sibrahim |
Telephonenumber | +33 (0)1 2345 6789 |
mail: | moc.emca|miharbI.biahuoS#moc.emca|miharbI.biahuoS |
roomnumber: | C105 |
1.3 Pré-requis :
• Un Serveur OpenLdap sur une distribution fedora 7.0
• Un Serveur Samba avec les services NSS et PAM
• Un Client Windows 2000
1.4 Fonctionnement du projet :
Etape de connexion sur un serveur LDAP :

2 Réalisation du Projet
2.1 Configuration annuaire LDAP :
/etc/openldap/ldap.conf
Fichier de configuration permettant de fournir les informations nécessaires au commandes shellde type ldapsearch, ldapmodify, etc.
/etc/openldap/slapd.conf
Fichier de configuration du démon /etc/init.d/ldap(slapdet slurpd)
On intègre le schéma samba en plus des schémas par défaut :

On crée notre racine :

On donne le nom de domaine, le mot de passe du root, et la directory ou recherché la base de donnée
Rootdn et rootpw sont des information confidentiel, ils doivent donc etre crypté, pour cela on peut leprogramme slappsswd qui affichera dans le shell chiffré en SSHA et il faudra plus le copier dans le fichier slapd.conf
Maintenant, on doit créer la racine de l’annuaire, en utilisant la commande smbldap-populate contenue dans les smbldap-tools :
dn: dc=IbrahimAndSehali,dc=uccle
objectclass: top
objectclass: dcObject
objectclass: organization
o: IbrahimAndSehali
dc: IbrahimAndSehali
description: Racine de l'annuaire
2.2 Configuration de samba :
On configure le fichier Samba a partir du fichier /etc/samba/smb.conf


On met l’adresse du serveur LDAP
domain logons = Yes
domain master = Yes
;option LDAP
passdb backend = ldapsam:ldap://127.0.0.1
On met le chemin de recherche de la base LDAP
ldap suffix = dc=IbrahimAndSehali,dc=uccle
ldap machine suffix = ou=Machines
ldap user suffix = ou=Users
ldap group suffix = ou=Group
On met le DN de l’administrateur de la base LDAP
ldap admin dn = "cn=lelouch,dc=IbrahimAndSehali,dc=uccle"
Synchronise les mots de passe Linux et Windows
ldap passwd sync = Yes
Il faut absolument donner le mot de passe de l’administrateur de l’annuaire a Samba sinon il sera pas y accéder, grâce a la commande :
smbpasswd -W
2.3 Configuration de LDIF :
On va créer les utilisateurs a l’aide du fichier LDIF et les inséré dans la base a travers les clients OpenLdap.
Voici le fichier LDIF :

On complète ces quelque ligne pour créé un utilisateur (uid, userPassword, uidNumber,…), ici dans le fichier utilisateur1.ldif
Maintenant que le fichier LDIF existe et est completé, on doit l’introduire dans l’annuaire, pour cela on utilise la commande :
ldapadd -x -D cn=lelouch,dc=IbrahimAndSehali,dc=uccle -W –f utilisateur.ldif
Il manque plus qu’a mettre le mot de passe demandé, celui du fichier slapd.conf qu’on a complété précédemment.
Désormais l’utilisateur « utilisateur1 » est enregistré dans l’annuaire
2.4 Les smbldap-tools :
C’est un utilitaire qui permet d’utilisé l’annuaire LDAP, il permet donc d’ajouter, supprimer, modifier, … des utilisateurs, voici le fichier smbldap-tools :



2.5 Utilisation :
smbldap-useradd : est un utilitaire qui permet d’ajouter des utilisateurs dans la base LDAP avex les attributs SAMBA
Usage: /usr/sbin/smbldap-useradd [-awmugdsckABCDEFGHMNPST?] username
-o ajoute l'utilisateur dans l'OU (relative au suffix utilisateur)
-a est un utilisateur Windows (sinon, uniquement POSIX)
-b est un utilisateur AIX
-w est une station de travail Windows
-i is a trust account (Windows Workstation)
-u uid
-g gid
-G groupes supplémentaires séparés par des virgules
-n ne pas créer de groupe
-d home
-s shell
-c commentaires
-m créer le répertoire home et copier /etc/skel
-k répertoire squelette (avec -m)
-t temps. attendre 'temps' secondes avant de quitter ( avec -w )
-P exécute smbldap-passwd après
-A peux changer le mot de passe ? 0 = non, 1 = oui
-B dois changer le mot de passe ? 0 = non, 1 = oui
-C sambaHomePath
-D sambaHomeDrive
-E sambaLogonScript (Script de login)
-F sambaProfilePath (Chemin du profil utilisateur)
-H sambaAcctFlags (Bits de contrôle de compte Samba)
-N surnom
-S nom de famille
-M adresses email locales (séparées par des virgules)
-T adresse email de transfert
-? affiche ce message d'aide
smbldap-group* : identique aux utilisateurs sauf qu’elle s’applique pour un group
smbldap-passwd : permet de créer le mot de passe de l’utilisateur.
Usage: /usr/sbin/smbldap-passwd [options] [username]
-h, -?, --help show this help message
-s update only samba password
-u update only UNIX password
smbldap-usermod : permet de modifier un utilisateur
Usage: /usr/sbin/smbldap-usermod [-awmugdsckABCDEFGHIPSMT?h] username
Available options are:
-c gecos
-d home directory
-r new username (cn, sn and dn are updated)
-u uid
-o uid can be non unique
-g gid
-G supplementary groups (comma separated)
-s shell
-N canonical name
-S surname
-P ends by invoking smbldap-passwd
For samba users:
-a add sambaSAMAccount objectclass
-e expire date ("YYYY-MM-DD HH:MM:SS")
-A can change password ? 0 if no, 1 if yes
-B must change password ? 0 if no, 1 if yes
-C sambaHomePath (SMB home share, like '\\PDC-SRV\homes')
-D sambaHomeDrive (letter associated with home share, like 'H:')
-E sambaLogonScript (DOS script to execute on login)
-F sambaProfilePath (profile directory, like '\\PDC-SRV\profiles\foo')
-H sambaAcctFlags (samba account control bits like '[NDHTUMWSLKI]')
-I disable an user. Can't be used with -H or -J
-J enable an user. Can't be used with -H or -I
-M mailAddresses (comma separated)
-T mailToAddress (forward address) (comma separated)
-?|-h show this help message
smbldap-userdel : permet de supprimer un utilisateur
Usage: /usr/sbin/smbldap-userdel [-r?] username
-r remove home directory
-R remove home directory interactively
2.6 Configuration des clients Linux
2.6.1 Configuration PAM :
La configuration de PAM se fait dans le fichier /etc/pam.d/system-auth :

2.6.2 Client LDAP:
Voici le fichier /etc/ldap.conf:

On doit également modifier le fichier /etc/openldap/ldap.conf pour que tous les utilitaires fonctionnent :

2.6.3 Configuration NSS :
Pour configuré NNS, on va juste ajouter « ldap » a chaque ligne qui devras utilisé LDAP dans le fichier /etc/nsswitch.conf :
passwd: files ldap
shadow: files ldap
group: files ldap
L'attribut files en début de ligne spécifie qu'il doit d'abord chercher dans les fichiers en local et venir compléter ses informations avec LDAP
2.7 Configuration des clients Windows :
Pour la configuration des clients Windows on va simplement utiliser les smbldap-tools, à travers la commande :
smbldap-useradd -w NomOrdinateur$
3 Bibliographie :
http://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
http://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html
http://www.commentcamarche.net/contents/internet/ldap.php3
http://doc.fedora-fr.org/wiki/Configuration_d%27un_serveur_d%27authentification_Openldap_Samba
http://articles.mongueurs.net/magazines/linuxmag65.html
http://zoonek2.free.fr/UNIX/27_ldap.html
http://www.vogelweith.com/debian_server/050_openldap.php
http://fr.wikipedia.org/wiki/OpenLDAP