Il est très fréquent de vouloir ajouter ses propres attributs et classes d'objets à un annuaire LDAP, car les classes et attributs standards ne couvrent pas tous les cas fonctionnels. Cette opération peut maintenant être réalisée en "live" sur OpenLDAP, via l'objet cn=schema,cn=config
. Il faut pour cela créer un fichier LDIF contenant la définition des attributs à ajouter et les classes d'objets, puis ajouter ce fichier LDIF dans l'annuaire.
Exemple de fichier LDIF :
dn: cn=myschema,cn=schema,cn=config objectClass: olcSchemaConfig cn: myschema olcAttributeTypes: ( 1.3.6.1.4.1.16832.666.1.1 NAME 'myattr1' DESC 'Identifies an attribute 1.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) olcAttributeTypes: ( 1.3.6.1.4.1.16832.666.1.2 NAME 'myattr2' DESC 'Identifies an attribute 2.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) olcAttributeTypes: ( 1.3.6.1.4.1.16832.666.1.3 NAME 'myattr3' DESC 'Identifies an attribute 3.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) olcObjectClasses: ( 1.3.6.1.4.1.16832.666.2.1 NAME 'myobjclass1' SUP top STRUCTURAL MUST ( myattr1 ) MAY ( myattr2 $ myattr3 $ description $ ou ) ) olcObjectClasses: ( 1.3.6.1.4.1.16832.666.2.2 NAME 'myobjclass2' SUP myobjclass1 STRUCTURAL MUST ( myattr1 $ myattr2) MAY ( myattr3 $ $o ) )
On voit que l'on va ici ajouter 3 attributs spécifiques : myattri1, myattr2, myattr3. Ils sont tous de type Directory String (cf. Syntaxes). Ces attributs seront utilisés dans deux classes d'objets, dont l'une hérite de l'autre. Dans ce cas, la classe d'objet myobjclass2 va hériter des attributs de la classe myobjclass1.
L'ajout du fichier LDIF peut se faire via la commande :
ldapadd -Y EXTERNAL -H ldapi:/// -f myschema.ldif
Quelques références :