El Schema LDAP

Lista exaustiva de los schemas adoptados:

Mantenemos esa lista en ~/ldifs/schema/interior.conf:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/eduperson.schema
include /etc/ldap/schema/pwm.schema

Los 4 primeros están en la distribución de OpenLDAP (y en realidad ya cargamos algunos con el .ldif correspondiente)
Los dos siguientes se construyen como indicado a continuación:

Schema para PWM

Las extensiones de schema que requiere pwm están en la documentación de admin , y más específicamente acá el archivo pwm.schema para openldap

El /etc/ldap/schema/pwm.schema que creamos contiene:


# /etc/ldap/schema/pwm.schema
#
# We try to define OID's "correctly" as outlined here:
#
# http://www.openldap.org/doc/admin23/schema.html
#
# 1.3.6.1.4.1   base OID
# 591242        organization idenfifier
# 1             if an objectclass
# 2             if an attribute
# yyyy.mm.dd    date of creation
# n             extra identifier
#
attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.1
        NAME 'pwmEventLog'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.2
        NAME 'pwmResponseSet'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.3
        NAME 'pwmLastPwdUpdate'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )

attributetype ( 1.3.6.1.4.1.591242.2.2010.04.16.4
        NAME 'pwmGUID'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

objectclass ( 1.3.6.1.4.1.591242.1.2010.04.16.1
        NAME 'pwmUser'
        AUXILIARY
        MAY ( pwmLastPwdUpdate $ pwmEventLog $ pwmResponseSet $
   pwmGUID )

eduPersona Schema

El schema de eduPerson está acá

Creamos con este el archivo /etc/ldap/schema/eduperson.schema.

Generamos los ldif que nos faltan con:

slaptest -f interior.conf -F convierte.d/

Obtenemos, en la carpeta convierte.d/ los archivos directamente para ser copiados al /etc/ldap/slapd.d

cp convierte.d/cn\=config/cn\=schema/cn\=\{4\}eduperson.ldif /etc/ldap/slapd.d/cn\=config/cn\=schema/
cp convierte.d/cn\=config/cn\=schema/cn\=\{5\}pwm.ldif /etc/ldap/slapd.d/cn\=config/cn\=schema/

Cambiar propietario:

chown openldap:openldap /etc/ldap/slapd.d/cn\=config/cn\=schema/cn\=\{4\}eduperson.ldif
chown openldap:openldap /etc/ldap/slapd.d/cn\=config/cn\=schema/cn\=\{5\}pwm.ldif

Reiniciar openldap

sudo service slapd restart

Para ver los schemas, y ver que quedo habilitado

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config

-------------
Referencia: http://www.linuxcolombia.com.co/?q=node/39
------------

Como integrar un Schema LDAP

Ahora se requiere un archivo .ldif de configuración dinámica, ya no la descripción .schema. En /etc/ldap/schema/ hay ejemplos de .schema y el correspondiente .ldif, en README se explica que éstos se obtienen "when converting a slapd.conf". Falta decir que es con la heramienta ldaptest.

Si tenemos un <esquema>.conf con:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/<mi_esquema_1>.schema
include /etc/ldap/schema/<mi_esquema_2>.schema
...
include /etc/ldap/schema/<mi_esquema_n>.schema

Con el comando:
slaptest -f <esquema>.conf -F convierte.d/

Obtenemos, en la carpeta convierte.d/ los archivos directamente para ser copiados al /etc/ldap/slapd.d