« Le système d'exploitation GNU-Linux/Les annuaires LDAP » : différence entre les versions
mAucun résumé des modifications |
Réparation. |
||
Ligne 202 : | Ligne 202 : | ||
{{TODO|rajouter un exemple de la commande ldapwhoami}} |
{{TODO|rajouter un exemple de la commande ldapwhoami}} |
||
'''slapadd''' est utilisé pour |
'''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. |
||
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 |
'''slapcat''' est utilisé pour générer une sortie LDIF LDAP basé sur le contenu d'une base de données slapd. |
||
<nowiki> </nowiki>générer une sortie LDIF LDAP basé sur le contenu d'une base de données slapd. |
|||
'''slapd''' est un serveur |
'''slapd''' est un serveur LDAP autonome. |
||
<nowiki> </nowiki> LDAP autonome. |
|||
'''slapindex''' est utilisé pour |
'''slapindex''' est utilisé pour regénérer les index de slapd suivant le contenu actuel d'une base de données. |
||
<nowiki> </nowiki> 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. |
'''slurpd''' est un serveur réplicat autoname pour LDAP. |
||
=== PhpLdapAdmin === |
=== PhpLdapAdmin === |
||
Ligne 228 : | Ligne 223 : | ||
Configuration : |
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 suivantes dans la configuration de PhpLdapAdmin : |
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 : |
||
# vi /etc/phpldapadmin/config.php |
# vi /etc/phpldapadmin/config.php |
||
Ligne 302 : | Ligne 297 : | ||
==== Procédure n°1 : validation de l'ajout de données sur le réplicat |
==== Procédure n°1 : validation de l'ajout de données sur le réplicat ==== |
||
===== Coté Provider ===== |
===== Coté Provider ===== |
Version du 6 mars 2018 à 16:54
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 :
# more /etc/ldap/slapd.conf
# Les schémas à inclure à l'annuaire
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
# le fichier contenant le PID du processus
pidfile /var/run/slapd/slapd.pid
# Le fichier contenant les arguments
argsfile /var/run/slapd/slapd.args
# La facilité utilisée avec syslog
loglevel none
# Emplacement des modules
modulepath /usr/lib/ldap
# Chargment de modules permettant d'étendre les fonctionnalités de OpenLDAP
moduleload back_hdb
# Limites concernant les recherches
sizelimit 500
tool-threads 1
##################################
# Définition du premier annuaire #
##################################
# On utilise un stockage basé sur le format de fichier '''HDB'''
backend hdb
database hdb
# On définit la ''racine'' de l'arbre (on parle de ''suffixe'' ou de ''basedn'')
suffix "dc=domaine,dc=fr"
# Répertoire stockant les données de l'annuaire, dans notre cas, des fichiers au format '''HDB'''
directory "/var/lib/ldap"
# L'administrateur de l'annuaire
rootdn "cn=admin,dc=domaine,dc=fr"
rootpw motdepasse # en clair ou généré via la commande '''slappasswd'''
# Des paramêtres d'optimisation du format HDB
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
# Les attributs à indexer en vue d'améliorer drastiquement les recherches
index objectClass eq
# à commenter ...
lastmod on
checkpoint 512 30
# contrôle d'accès aux attributs sensibles
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=domaine,dc=fr" write
by anonymous auth
by self write
by * none
# Annuaire avec accès anonyme en lecture seule
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=domaine,dc=fr" write
by * read
Après chaque modification de ce fichier, on relance OpenLDAP avec la commande suivante :
# /etc/init.d/slapd restart
Création de l'annuaire
On crée le fichier LDIF qui va initialiser le sommet de l'arbre :
# cat cree_arbre.ldif dn: dc=domaine,dc=fr objectClass: top objectClass: dcObject objectClass: organization dc: domaine o: domaine
On injecte le fichier LDIF dans l'annuaire via la commande ldapadd :
# ldapadd -x -h localhost -W -D "cn=admin,dc=domaine,dc=fr" -f cree_arbre.ldif Enter LDAP Password: adding new entry "dc=domaine,dc=fr"
Pour créer les autres entrées, on peut désormais utiliser PhpLdapAdmin.
Les commandes d'administration OpenLDAP
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édement 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 :
# cat cree_arbre.ldif dn: dc=domaine,dc=fr objectClass: top objectClass: dcObject objectClass: organization dc: domaine o: domaine
Pour injecter ce fichier LDIF dans notre annuaire :
# ldapadd -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -f cree_arbre.ldif -W
Si tout se passe bien, vous devez voir des lignes :
adding new entry "dc=domaine,dc=fr"
ldapsearch
La commande ldapsearch permet d'interroger l'annuaire LDAP.
Affiche toutes les entrées de l'annuaire :
# ldapsearch -x -h localhost -b "dc=domaine,dc=fr"
Affiche les attributs de l'utilisateur bob via l'utilisation d'un filtre :
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Affiche uniquement les attributs uid et homeDirectory de l'utilisateur bob :
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)" uid homeDirectory
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 :
# ldapdelete -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -W "cn=bob,ou=People,dc=domaine,dc=fr"
ldapmodify
La commande ldapmodify permet de modifier une entrée de l'annuaire LDAP.
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.
ldapcompare
La commande ldapcompare permet de comparer des entrées de l'annuaire LDAP.
ldappasswd
La commande ldappasswd permet de changer le mot de passe d'une entrée de l'annuaire LDAP.
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.
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 :
# apt-get install phpldapadmin
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 :
# vi /etc/phpldapadmin/config.php ... $ldapservers->SetValue($i,'server','base',array('dc=domaine,dc=fr')); $ldapservers->SetValue($i,'login','dn','cn=admin,dc=domaine,dc=fr'); ...
À chaque modification de ce fichier, il est préférable de redémarrer apache :
# /etc/init.d/apache2 restart
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 :
# vi /etc/ldap/slapd.conf ... # On indique à OpenLDAP de charger le module # permettant la réplication moduleload syncprov.la ... database bdb suffix dc=domaine,dc=fr rootdn dc=domaine,dc=fr directory /var/ldap/db index objectclass,entryCSN,entryUUID eq overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100
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).
# vi /etc/ldap/slapd.conf ... database hdb suffix dc=domaine,dc=fr rootdn dc=domaine,dc=fr directory /var/lib/ldap2 index objectclass,entryCSN,entryUUID eq syncrepl rid=123 provider=ldap://<adresse IP ou nom du provider LDAP>:389 type=refreshOnly interval=00:00:00:10 searchbase="dc=domaine,dc=fr" filter="(objectClass=*)" scope=sub attrs="*" schemachecking=off bindmethod=simple binddn="cn=admin,dc=domaine,dc=fr" credentials=admin
Il faut ensuite créer le répertoire du nouvel annuaire et le donner à l'utilisateur et au groupe openldap :
# mkdir /var/lib/ldap2 # chown openldap.openldap /var/lib/ldap2
Il ne reste plus qu'à relancer OpenLDAP :
# /etc/init.d/slapd restart
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
# cat bob.ldif dn: cn=bob,ou=People,dc=domaine,dc=fr objectClass: inetOrgPerson objectClass: posixAccount objectClass: top givenName: Eponge sn: Eponge cn: bob uid: bob userPassword: {MD5}F7WfMlfPOGcecKZLEkmjTA== uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/bob loginShell: /bin/sh mail: bob@domaine.fr
- on injecte ce fichier LDIF dans notre annuaire
# ldapadd -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -f bob.ldif -W
- on vérifie que l'utilisateur a bien été crée
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Coté Consumer
- on attend quelques secondes et on constate que l'utilisateur a bien été créé sur le réplicat
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Procédure n°2 : validation de la suppression de données sur le réplicat
Coté Provider
- on supprime l'utilisateur de notre annuaire
# ldapdelete -x -h localhost -D "cn=admin,dc=domaine,dc=fr" -W "cn=bob,ou=People,dc=domaine,dc=fr"
- on vérifie que l'utilisateur a bien été supprimé
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"
Coté Consumer
- on attend quelques secondes et on constate que l'utilisateur a bien été supprimé sur le réplicat
# ldapsearch -LLL -x -h localhost -b "dc=domaine,dc=fr" "(cn=bob)"