Retrouvez cet article dans : Linux Magazine 104
Utilisation de base
Le principe simple et génial de ldapvi est d’utiliser un éditeur de texte pour éditer le contenu d’un annuaire LDAP au format LDIF, et de mettre à jour en retour cet annuaire lorsque ce contenu est modifié. Par défaut, c’est vi qui est utilisé, comme le nom l’indique, mais il est possible d’utiliser n’importe quel autre éditeur en positionnant simplement la variable d’environnement# -*- coding: utf-8 -*- vim:encoding=utf-8: # http://www.lichteblau.com/ldapvi/manual#syntax 0 dc=domain,dc=com dc: msr-inria objectClass: top objectClass: domain 1 ou=users,dc=domain,dc=com ou: users objectClass: top objectClass: organizationalUnit 2 uid=bar,ou=users,dc=domain,dc=com objectClass: inetOrgPerson objectClass: posixAccount uid: bar uidNumber: 5000 cn: Joe Bar sn: Bar givenName: Joe gecos: Joe Bar mail: Joe.Bar@domain.com gidNumber: 5000 loginShell: /bin/bash homeDirectory: /home/bar ...La modification d’un enregistrement existant consiste à modifier les valeurs courantes de ses attributs ou à en rajouter ou en supprimer certains. L’effacement d’un enregistrement consiste à effacer l’intégralité du bloc correspondant. L’ajout d’un enregistrement se fait en ajoutant un nouveau bloc, avec le mot-clé add à la place du numéro d’ordre. Enfin, le déplacement d’un enregistrement dans l’annuaire se fait en modifiant son DN, tout simplement. À la sortie de l’éditeur, ldapvi cherche les modifications apportées. S’il n’y en a aucune, le programme s’arrête. Sinon, il vérifie la syntaxe du document final, et propose à l’utilisateur de corriger les éventuelles erreurs :
Error: Space at beginning of line. What now? [eQ?]Sinon, le programme soumet à l’utilisateur un bilan des changements effectués pour confirmation :
add: 0, rename: 0, modify: 1, delete: 0 Action? [yYqQvVebB*rsf+?]Les options disponibles sont :
y : soumettre les changements ;Y : soumettre les changements, en ignorant les erreurs ;e : revenir dans l’éditeur ;+ : revenir dans l’éditeur, avec ajout des attributs optionnels ;v : examiner les changements au format LDIF ;V : examiner les changements au format ldapvi ;b : se ré-authentifier ;B : passer de l’authentification simple à SASL ;* : changer de mécanisme d’authentification SASL ;s : ignorer le premier changement ;r : ignorer les effacements ;q : sauver les changements au format LDIF et quitter ;Q : ignorer les changements et quitter.
ldap_modify: Naming violation (64)
additional info: naming attribute ‘uid’ is not present in entry
Error at: uid=bar,ou=users,dc=domain,dc=com
add: 0, rename: 0, modify: 1, delete: 0
Action? [yYqQvVebB*rsf+?]
Astuces d’utilisation
ldapvi possède un certain nombre de paramètres d’invocation et de configuration. Il n’est pas question de les présenter tous ici (après tout, il y a une page de manuel pour ça), juste de présenter les plus intéressantes pour une utilisation classique.Invocation simplifiée
ldapvi utilise la bibliothèque# ldap.conf(5) # edit this as needed and paste into ~/.ldaprc # server name # (for parameterless operation, make sure to include at least this line) URI ldap://ldap.domain.com:389/??base # default search base BASE dc=domain,dc=com # user to bind as #BINDDN # search parameters (uncomment as needed) #DEREF never #SIZELIMIT 0 #TIMELIMIT 0Préciser l’utilisateur sous forme de son DN complet devient vite fastidieux. Il est également possible d’utiliser à la place un filtre de recherche, comme
Récupération ciblée
Récupérer l’intégralité de l’annuaire, lorsqu’il s’agit juste de modifier un seul enregistrement, est également fastidieux. Une première possibilité consiste à changer de base de recherche, et la portée de la recherche, avec les optionsldapvi --user ‘(uid=foo)’ --base uid=bar,ou=users,dc=domain,dc=com --scope base ldapvi --user ‘(uid=foo)’ --read uid=bar,ou=users,dc=domain,dc=com ldapvi --user ‘(uid=foo)’ uid=barElles donnent toutes le résultat suivant :
# -*- coding: utf-8 -*- vim:encoding=utf-8: # http://www.lichteblau.com/ldapvi/manual#syntax 0 uid=bar,ou=users,dc=domain,dc=com objectClass: inetOrgPerson objectClass: posixAccount uid: bar uidNumber: 5000 cn: Joe Bar sn: Bar givenName: Joe gecos: Joe Bar mail: Joe.Bar@domain.com gidNumber: 5000 loginShell: /bin/bash homeDirectory: /home/bar
Exploitation des schémas
Il est très facile de modifier l’annuaire, à partir de son contenu actuel. En revanche, à moins de maîtriser parfaitement les schémas, il est quelque peu difficile de savoir quels attributs supplémentaires sont disponibles ou même de créer un enregistrement à partir de rien. Pas de souci, ldapvi est également capable d’exploiter les schémas utilisés. Par défaut, seuls les attributs possédant une valeur apparaissent dans l’éditeur. L’option# -*- coding: utf-8 -*- vim:encoding=utf-8: # http://www.lichteblau.com/ldapvi/manual#syntax 0 uid=bar,ou=users,dc=domain,dc=com # structural object class: inetOrgPerson ### WARNING: extra structural object class: organizationalPerson ### WARNING: extra structural object class: person objectClass: inetOrgPerson objectClass: posixAccount uid: bar uidNumber: 5000 cn: Joe Bar sn: Bar givenName: Joe gecos: Joe Bar mail: Joe.Bar@domain.com gidNumber: 5000 loginShell: /bin/bash homeDirectory: /home/bar #audio: #businessCategory: #carLicense: #departmentNumber: #displayName: ...Pour créer un nouvel enregistrement à partir de rien, l’option
# -*- coding: utf-8 -*- vim:encoding=utf-8: # http://www.lichteblau.com/ldapvi/manual#syntax # structural object class: inetOrgPerson ### WARNING: extra structural object class: organizationalPerson ### WARNING: extra structural object class: person add objectClass: inetOrgPerson objectClass: posixAccount objectClass: organizationalPerson objectClass: top objectClass: person cn: uid: uidNumber: gidNumber: homeDirectory: sn: #audio: #businessCategory: #carLicense: #departmentNumber: #displayName:
Autres modes d’utilisation
ldapvi autorise également certaines formes alternatives d’invocation, qui en font une alternative aux outils classiques d’Openldap, de manière plus verbeuse et interactive :ldapvi --outest similaire Ãldapsearch.ldapvi --inest similaire Ãldapmodify.ldapvi --deleteest similaire Ãldapdelete.ldapvi --renameest similaire Ãldapmodrdn.
 Retrouvez cet article dans : Linux Magazine 104





Encore plus sympa à utiliser, ldapsh: http://ldapsh.sourceforge.net/
Il permet de se balader dans l’arbre LDAP comme dans un filesystem, et d’éditer les entrées comme ldapvi !