# Le système d'exploitation GNU-Linux/Les annuaires LDAP

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Configuration

Pour Debian Squeeze le fichier slapd.conf se situe dans /usr/share/doc/slapd/examples/slapd.conf. Il faut donc changer son emplacement avec cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/. Puis modifier le fichier /etc/default/slapd et changer la ligne 'SLAPD_CONF=/etc/ldap/slapd.conf'.
La configuration de OpenLDAP se situe dans le fichier /etc/ldap/slapd.conf :
Après chaque modification de ce fichier, on relance OpenLDAP avec la commande suivante :

### Création de l'annuaire

On crée le fichier LDIF qui va initialiser le sommet de l'arbre :
On injecte le fichier LDIF dans l'annuaire via la commande ldapadd :
Pour créer les autres entrées, on peut désormais utiliser PhpLdapAdmin.

### Les commandes d'administration OpenLDAP

Parler des commandes : slapacl, slapcat, slapindex, slapadd, slappasswd, slapauth, slapdn te slaptest

## Les programmes complémentaires
### Les outils en ligne de commande

NB : les commandes suivantes sont fournies par le paquet Debian ldap-utils. Elles disposent des options génériques suivantes :
* -h <adresse IP ou nom> : permet d'indiquer le serveur hébergeant l'annuaire LDAP
* -x : on utilise l'authentification simple et non l'authentification TLS/SSL.
* -b <basedn> : permet d'indiquer l'annuaire à consulter (le basedn ou suffix)
* -D <dn d'un objet> : permet de s'authentifier avec le DN indiqué
* -W : demande la saisie du mot de passe du DN précédemment indiqué
* -f <fichier LDIF> : permet d'indiquer un fichier LDIF

#### ldapadd

La commande ldapadd permet d'ajouter des entrées dans l'annuaire LDAP.
Prenons par exemple le fichier LDIF suivant qui crée le suffixe (le basedn) de notre annuaire :
Pour injecter ce fichier LDIF dans notre annuaire :
Si tout se passe bien, vous devez voir des lignes :

#### ldapsearch

La commande ldapsearch permet d'interroger l'annuaire LDAP.
Affiche toutes les entrées de l'annuaire :
Affiche les attributs de l'utilisateur bob via l'utilisation d'un filtre :
Affiche uniquement les attributs uid et homeDirectory de l'utilisateur bob :

#### ldapdelete

La commande ldapdelete permet de supprimer une entrée de l'annuaire LDAP. On indique à cette commande le(s) dn(s) à supprimer.
Supprime l'utilisateur bob :

#### ldapmodify

La commande ldapmodify permet de modifier une entrée de l'annuaire LDAP.
rajouter un exemple de la commande ldapmodify

#### ldapmodrdn

La commande ldapmodrdn permet de renommer une entrée de l'annuaire LDAP. Cette opération revient à changer le dn (distinguished name) d'une entrée.
rajouter un exemple de la commande ldapmodrdn

#### ldapcompare

La commande ldapcompare permet de comparer des entrées de l'annuaire LDAP.
rajouter un exemple de la commande ldapcompare

#### ldappasswd

La commande ldappasswd permet de changer le mot de passe d'une entrée de l'annuaire LDAP.
rajouter un exemple de la commande ldappasswd

#### ldapwhoami

La commande ldapwhoami permet de connaître avec quelle identité on est connecté à l'annuaire LDAP, c'est l'équivalent de la commande Unix whoami.
rajouter un exemple de la commande ldapwhoami
slapadd est utilisé pour ajouter des entrées spécifiées dans le format LDAP Directory Interchange Format (LDIF) dans une base de données slapd.
slapcat est utilisé pour générer une sortie LDIF LDAP basé sur le contenu d'une base de données slapd.
slapd est un serveur LDAP autonome.
slapindex est utilisé pour regénérer les index de slapd suivant le contenu actuel d'une base de données.
slurpd est un serveur réplicat autoname pour LDAP.

### PhpLdapAdmin

PhpLdapAdmin est un logiciel qui permet d'administrer un annuaire LDAP via une interface Web.
Installation :
Configuration :
PhpLdapAdmin s'est configuré avec l'annuaire définit par défaut dans OpenLDAP. Si on a changé ce dernier, il faut modifier les deux lignes suivantes dans la configuration de PhpLdapAdmin :
À chaque modification de ce fichier, il est préférable de redémarrer apache :
Accès à PhpLdapAdmin : http://localhost/phpldapadmin/

## La réplication LDAP
### Configuration du provider LDAP

On modifie le fichier /etc/ldap/slapd.conf du provider LDAP pour indiquer l'annuaire à répliquer, on rajoute les lignes en gras dans la configuration de l'annuaire et on modifie les attributs à indexer :

### Configuration du consumer LDAP

On modifie /etc/ldap/slapd.conf du second OpenLDAP (le consumer) pour lui indiquer l'annuaire à répliquer et l'adresse du premier OpenLDAP (le provider).
Il faut ensuite créer le répertoire du nouvel annuaire et le donner à l'utilisateur et au groupe openldap :
Il ne reste plus qu'à relancer OpenLDAP :

### Validation de la réplication

L'objectif est de constater la réplication des objets de l'annuaire.

#### Procédure n°1 : validation de l'ajout de données sur le réplicat
##### Coté Provider

* on crée un fichier LDIF contenant l'utilisateur à rajouter
* on injecte ce fichier LDIF dans notre annuaire
* on vérifie que l'utilisateur a bien été créé

##### Coté Consumer

* on attend quelques secondes et on constate que l'utilisateur a bien été créé sur le réplicat

#### Procédure n°2 : validation de la suppression de données sur le réplicat
##### Coté Provider

* on supprime l'utilisateur de notre annuaire
* on vérifie que l'utilisateur a bien été supprimé

##### Coté Consumer

* on attend quelques secondes et on constate que l'utilisateur a bien été supprimé sur le réplicat