Introduction
Ce document va expliquer l’utilisation des outils client de la suite OpenLDAP.
Cela s’applique aussi bien à une distribution Linux, testé sur Debian Sarge, que sur FreeBSD, testé en 6.1.
Prérequis
Il est bien évidement nécessaire d’avoir un serveur LDAP configuré, pourquoi un OpenLDAP slapd par exemple. Pour cela, vous pouvez suivre le document suivant: Configuration SLAPD standard.
Il faudra avoir installé le paquet ldap-utils sur une Debian ou alors le port openldap23-client sur un FreeBSD.
Dans le cas de la Debian, les configurations se passeront dans /etc/ldap alors que sur FreeBSD, cela sera dans /usr/local/etc/openldap.
Il faudra éditer le fichier ldap.conf pour qu’il ressemble à ca:
# # Config LDAP client # # La base de notre annuaire BASE o=centile,dc=com # L'URL pour joindre le server URI ldaps://ldap.free-4ever.net # Nécessaire pour les connexions SSL si le client ne connait pas le certificat du CA TLS_REQCERT allow
Grâce à ces paramètres, nous pourrons alléger les lignes de commandes puisque nous ne devrons plus spécifier le host et le base DN.
Dans la suite du document, tout sera basé un FreeBSD.
Un fichier LDIF
Un fichier LDIF est un fichier qui a une syntaxe spécifique qui va permettre à OpenLDAP de le comprendre pour ajouter ou modifier des informations par exemple.
Voici le fichier LDIF de l’utilisateur « watcher ». Si vous avez suivi mon document: Configuration SLAPD standard. Celui-ci est nécessaire pour parcourir l’arbre LDAP sans utiliser le login « manager ».
# watcher, free-4ever, net # Le DN, ce qui nous permet de placer de d'identifier l'object dans l'arbre dn: cn=watcher,o=free-4ever,dc=net # La définition de l'objet # watcher est de type person objectClass: top objectClass: person # le password, généré avec la commande slappassword userPassword: {SSHA}kJCQrbYPrvKNXEKsGrAxHfjGmJsk7ZJw # Le common name de notre objet cn: watcher # Normalement le nom de famille, ici plus une description qu'autre chose sn: LDAP viewer
Un autre exemple de fichier LDIF mais qui serait pour un container:
# users, free-4ever, net # Le DN de notre objet dn: ou=users,o=free-4ever,dc=net # La définition de l'objet # C'est un organizationalUnit qui un container utiliser pour ranger des objets objectClass: top objectClass: organizationalUnit # Le nom de notre "ou" ou: users # Une description description: tous les utilisateurs
Les commandes OpenLDAP client
Dans tous les commandes suivantes, il y aura certains paramètres commun. Je vais les détailler de suite:
- -x permet de désactiver l’authentification SASL
- -D spécifie le DN de l’utilisateur qui a les droits minimum pour faire l’opération souhaité
- -W pour que la commande demande en interactif le password correspond au DN
ldapadd
La commande ldapadd va nous permettre d’entrer les informations d’un fichier LDIF dans notre arbre LDAP.
Pour cela, taper simplement la commande suivante:
# ldapadd -x -D "cn=manager,o=free-4ever,dc=net" -W -f watcher.ldif # Enter LDAP Password: <Very secret root password>
Dans ce cas, on se contente de rajouter l’option suivante:
- -f <fichier.ldif> qui indique quel fichier LDIF on souhaite ajouter à notre arbre
Cela aura pour résultat d’ajouter notre utilisateur « watcher » à notre arbre LDAP.
ldappasswd
La commande ldappasswd va nous permettre de changer le mot de passe d’un utilisateur présent dans notre arbre LDAP.
Pour cela taper simplement:
# ldappasswd -x -D "cn=manager,o=free-4ever,dc=net" -W -S "cn=watcher,o=free-4ever,dc=net" # Password: <Very secret new password> # Confirm: <Very secret new password> # Enter LDAP Password: <Very secret root password>
Dans ce cas, on se contente de rajouter les options suivantes:
- -S que la commande nous demande en interactif le nouveau password
- « cn=watcher,o=free-4ever,dc=net » qui indique le DN de l’utilisateur dont on veut changer le mot de passe
Cela aura pour résultat de changer le mot de passe de notre utilisateur « watcher ».
ldapmodify
La commande ldapmodify va nous permettre de changer un paramètre d’un DN de l’arbre LDAP.
Disons par exemple que nous souhaitons changer la description de notre utilisateur « watcher ». Modifions le fichier LDIF comme ci-dessous:
# watcher, free-4ever, net # Le DN, ce qui nous permet de placer de d'identifier l'object dans l'arbre dn: cn=watcher,o=free-4ever,dc=net # La définition de l'objet # watcher est de type person objectClass: top objectClass: person # le password, généré avec la commande slappassword userPassword: {SSHA}kJCQrbYPrvKNXEKsGrAxHfjGmJsk7ZJw # Le common name de notre objet cn: watcher # Normalement le nom de famille, ici plus une description qu'autre chose sn: Utilisateur LDAP pour regarder
Taper simplement la commande suivante:
# ldapmodify -x -D "cn=manager,o=free-4ever,dc=net" -W -f watcher.ldif # Enter LDAP Password: <Very secret root password>
Dans ce cas, on se contente de rajouter l’option suivante:
- -f <fichier.ldif> qui indique quel fichier LDIF on souhaite utiliser pour modifier quelque chose
Cela aura pour résultat de changer le « sn » qui l’on utilise comme description de notre utilisateur.
ldapsearch
La commande ldapsearch va nous permettre de faire des recherches dans notre arbre LDAP.
Pour cela taper simplement:
# ldapsearch -x -D "cn=manager,o=free-4ever,dc=net" -W objectclass=* # Enter LDAP Password: <Very secret root password>
Dans ce cas, on se contente de rajouter l’option suivante:
- objectclass=* qui indique de tout recherche dans l’arbre. En gros cette commande dump tout l’arbre sur la sortie standard… pratique pour les backups
On peut bien sur pousser les critères de recherche en précisant des branches de l’arbre ou alors certains objectclass uniquement.
ldapdelete
La commande ldapdelete va nous permettre d’effacer des entrées dans notre arbre LDAP.
Pour cela, taper simplement:
# ldapdelete -x -D "cn=manager,o=free-4ever,dc=net" -W "cn=watcher,o=free-4ever,dc=net" # Enter LDAP Password: <Very secret root password>
Dans notre cas, on se contente de rajouter l’option suivante:
- « cn=watcher,o=free-4ever,dc=net » qui indique le DN à effacer
Cela aura pour résultat d’effacer l’objet « cn=watcher,o=free-4ever,dc=net ».
Mot de la fin
Voila une courte présentation des principales commandes OpenLDAP client pour manager notre arbre LDAP.