Les schémas contenus dans OpenLDAP
Après l’installation d’OpenLDAP, il est possible de trouver les fichiers des différents schémas dans le répertoire /etc/openldap/schema comme le montre la figure 7-1 :
[root@ldap01 schema]# ls -lrt 
total 308 
. . . 
-rw-r--r--. 1 root root  3481 Jun 18  2014 inetorgperson.ldif 
-rw-r--r--. 1 root root  3330 Jun 18  2014 dyngroup.ldif 
-rw-r--r--. 1 root root  4842 Jun 18  2014 duaconf.ldif 
-rw-r--r--. 1 root root 12006 Jun 18  2014 cosine.ldif 
-rw-r--r--. 1 root root 20612 Jun 18  2014 core.ldif 
-rw-r--r--. 1 root root  1845 Jun 18  2014 corba.ldif 
-rw-r--r--. 1 root root  2036 Jun 18  2014 collective.ldif 
. . . 
-rw-r--r--. 1 root root 13901 Jun 18  2014 java.schema 
-rw-r--r--. 1 root root  6267 Jun 18  2014 inetorgperson.schema 
-rw-r--r--. 1 root root  3289 Jun 18  2014 dyngroup.schema 
-rw-r--r--. 1 root root 10388 Jun 18  2014 duaconf.schema 
-rw-r--r--. 1 root root 73994 Jun 18  2014 cosine.schema 
-rw-r--r--. 1 root root 20499 Jun 18  2014 core.schema 
-rw-r--r--. 1 root root  8063 Jun 18  2014 corba.schema 
-rw-r--r--. 1 root root  6190 Jun 18  2014 collective.schema 
 [root@ldap01 schema]#
Figure 7-1
Il s’y trouve également des fichiers ".ldif" pour chacun des fichiers ".schema" qui permettent d’être chargé dans le « bon » format afin d’être exploitable par un serveur OpenLDAP.
Lors de l’installation d’un serveur OpenLDAP, il est fortement conseillé d’utiliser au moins les schémas de base ci-dessous :
include     /etc/openldap/schema/core.schema 
include     /etc/openldap/schema/cosine.schema 
include     /etc/openldap/schema/inetorgperson.schema 
include     /etc/openldap/schema/nis.schema 
include     /etc/openldap/schema/ppolicy.schema
En effet, ils permettent de charger les schémas utilisés par le serveur OpenLDAP lui-même afin d’assurer son bon fonctionnement... comme par exemple les entrées dans le DIT de configuration (cn=config) où les attributs utilisés sont spécifiques à OpenLDAP.
Par ailleurs, le chargement de ces schémas apportera les attributs suffisants à la création d’entrées telles que des utilisateurs Unix ou Windows, des comptes ordinateurs, des groupes d’utilisateurs ainsi que de nombreux autres attributs en relation avec le monde de l’entreprise.
Par exemple, le schéma nommé "nis.schema" de la figure 7-2 ci-dessous apporte entre autres les classes d’objets et attributs nécessaires à la création d’entrées de type utilisateur "UNIX/Linux" dans l’annuaire.
# Définition des objectclass 
 
objectclass ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ 
   DESC ’Abstraction of an account with POSIX attributes’ 
   SUP top AUXILIARY 
   MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) 
   MAY ( userPassword $ loginShell $ gecos $ description ) ) 
 
objectclass ( 1.3.6.1.1.1.2.1 NAME ’shadowAccount’ 
   DESC ’Additional attributes for shadow passwords’ 
   SUP top AUXILIARY 
   MUST uid 
   MAY ( userPassword $ shadowLastChange $ shadowMin $ 
         shadowMax $ shadowWarning $ shadowInactive $ 
         shadowExpire $ shadowFlag $ description ) ) 
 
objectclass ( 1.3.6.1.1.1.2.2 NAME ’posixGroup’ 
   DESC ’Abstraction of a group of accounts’ 
   SUP top STRUCTURAL 
   MUST ( cn $ gidNumber ) 
   MAY ( userPassword $ memberUid $ description ) ) 
 
# Définitions des attributs 
 
attributetype ( 1.3.6.1.1.1.1.0 NAME ’uidNumber’ 
   DESC ’An integer uniquely identifying a user in an administrative domain’ 
   EQUALITY integerMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) 
 
attributetype ( 1.3.6.1.1.1.1.1 NAME ’gidNumber’ 
   DESC ’An integer uniquely identifying a group in an administrative domain’ 
   EQUALITY integerMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) 
 
attributetype ( 1.3.6.1.1.1.1.2 NAME ’gecos’ 
   DESC ’The GECOS field; the common name’ 
   EQUALITY caseIgnoreIA5Match 
   SUBSTR caseIgnoreIA5SubstringsMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
Figure 7-2 : Schema "nis.schema"
Ce même fichier existe dans un format ".ldif", formaté avec les attributs fonctionnels du serveur OpenLDAP (olcObjectClasses et olcAttributeTypes) destiné à être chargé lors du démarrage du daemon "slapd". Ainsi, en comparant le fichier "nis.ldif" avec le fichier précédent "nis.schema" on peut observer qu’il comporte les mêmes informations, mais cette fois-ci structurées pour être intégré à la configuration de l’annuaire (OLC).
dn: cn=nis,cn=schema,cn=config 
objectClass: olcSchemaConfig 
cn: nis 
olcAttributeTypes: ( 1.3.6.1.1.1.1.2 NAME ’gecos’ DESC ’The GECOS 
field; the common name’ EQUALITY caseIgnoreIA5Match SUBSTR 
caseIgnoreIA5SubstringsMatc h SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) 
... 
olcObjectClasses: ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ DESC  
’Abstraction of an account with POSIX attributes’ SUP top AUXILIARY MUST ( cn $ uid $ uidNu mber $ gidNumber $ homeDirectory ) MAY 
( userPassword $ loginShell $ gecos $ description ) ) 
...
Figure 7-3 : Schema "nis.ldif"