La gestion et la mise à jour des schémas dans un annuaire OpenLDAP reste compliquée pour les non‐initiés.
Le projet FusionDirectory avait donc créé des outils qui permettent de simplifier la gestion des schémas pour son utilisation propre.
Suite aux demandes des utilisateurs de pouvoir utiliser ces outils hors du contexte FusionDirectory, nous avons créé un nouvel outil, ldap-schema-manager, qui peut être utilisé indépendamment. Il est sous licence GPL v2+.
Il s’agit en fait de l’outil fusiondirectory-insert-schema qui a été rendu générique pour pouvoir être utilisé y compris par les personnes n’utilisant pas FusionDirectory pour gérer leur arbre OpenLDAP.
Dans la prochaine version de FusionDirectory, fusiondirectory-insert-schema se basera sur ldap-schema-manager (avec la seule différence d’insérer par défaut les schémas FusionDirectory, et de chercher dans le dossier de schéma FusionDirectory au lieu du dossier standard utilisé par défaut dans l’outil générique).
Installation
L’installation peut se faire sous Debian, RHEL, CentOS, Scientific Linux en utilisant les dépôts mentionnés ci‐dessus. Le code source est disponible sous forme d’archive tar.gz sur le dépôt http://repos.fusiondirectory.org/sources/, ainsi que sur le miroir chez GitHub.
Utilisation
Lister les schémas déjà insérés :
ldap-schema-manager -l
Insérer un schéma depuis le dossier standard :
ldap-schema-manager -i cosine
Pour insérer /etc/ldap/schema/cosine.ldif
; spécifier cosine.schema
pour convertir /etc/ldap/schema/cosine.schema
en LDIF et insérer le résultat.
Insérer un schéma depuis un fichier quelconque :
ldap-schema-manager -i /path/to/your/file.schema
Mettre à jour un schéma :
ldap-schema-manager -m /path/to/your/file.schema
Vider un schéma :
ldap-schema-manager -e schema_name
Attention : Cela vide le schéma mais le nœud sera toujours présent dans l’arbre de cn=schema,cn=config.
Il est impossible de supprimer un nœud de cn=schema,cn=config
à notre connaissance, à part en arrêtant le serveur LDAP et en supprimant le fichier à la main (dans le cas d’un back‐end fichiers). L’outil propose donc cette solution pour pouvoir retirer un schéma sans arrêter le serveur LDAP, mais le schéma sera toujours listé dans les schémas présents par -l
.
La conversion de schéma vers LDIF est faite par l’outil schema2ldif, déjà disponible depuis un moment. La seule contrainte est que le schéma liste d’abord les attributs puis les_ objectClass_, ce qui est le cas dans tous les schémas standards qu’on a pu croiser.
L’outil cherchera un fichier avec l’extension .ldif
si son extension .schema
n’est pas explicitement donnée.
Lors de l’insertion avec -i
, l’opération échouera si un schéma de même nom est déjà présent.
À l’inverse, lors d’un -m
, l’opération échoue si un schéma du même nom n’est pas présent.
Il faut donc faire attention si l’on veut insérer un schéma vidé par -e
, il faut utiliser -m
et non pas -i
.
On peut spécifier autant de schémas à insérer que l’on veut dans la même commande (s’ils sont dans le même dossier, vous pouvez spécifier d’abord le dossier puis la liste des noms de schéma après le -i
ou -m
).
Pour plus d’informations, consultez l’aide de l’outil :
$ ldap-schema-manager -h
usage: /usr/bin/ldap-schema-manager [-y] [-n] [-c] [-o options] [path] [-h|-l|-i schema1 schema2|-m schema1 schema2|-e schema1 schema2]
-h, --help : this (help) message
path : where to find the schemas
-i, --insert : specify the schemas to insert
-l, --list : list inserted schemas
-m, --modify : modify exising inserted schemas
-e, --empty : empty exising inserted schemas (do not remove them)
-n, --nodelete : do not delete generated ldifs at the end
-o, --options : set ldap options used (default is -Y EXTERNAL -H ldapi:///)
-c, --continue : continue on error(s)
-y, --yes : answer yes to all questions
Default path is /etc/ldap/schema/