LDAP/Populating
Introducción
Para añadir el contenido y la estructura inicial a una base de datos vía LDAP se emplea el programa ldapadd
junto con los datos iniciales en formato LDIF.
En nuestro caso queremos que existan dos cosas:
- Un directorio con cuentas de usuario para conceder acceso a un servicio.
- Una libreta de direcciones común para todos los usuarios.
- Una libreta de direcciones personal para cada usuario.
El archivo de datos comienza con la raíz del árbol de entradas:
dn: dc=aprenda,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: Equipo aprenda
dc: aprenda.com
Herramientas
Si no indico otra cosa los siguientes parámetros son comunes a las herramientas abajo descritas. Estas herramientas, además, son de tipo administrativo y no requiren al servidor LDAP en funcionamiento.
Parámetro común | Finalidad |
---|---|
-u | No grabar nada en la base de datos. |
-v | Habilitar el modo verboso. |
-f archivo | Especificar un archivo de configuración diferente al estándar (que en Debian está en /etc/ldap/slapd.conf ).
|
slaptest
Verifica el archivo de configuración del servidor LDAP analizándolo conforme a las reglas generales y específicas del backend de la base de datos.
# slaptest -u -v
/etc/ldap/slapd.conf: line 92: <replogfile> keyword is obsolete (ignored)
/etc/ldap/slapd.conf: line 103: rootdn is always granted unlimited privileges.
/etc/ldap/slapd.conf: line 122: rootdn is always granted unlimited privileges.
/etc/ldap/slapd.conf: line 135: rootdn is always granted unlimited privileges.
config file testing succeeded
#
slapadd
Inicializa el directorio ya que abre la base de datos que lo contiene y carga las entradas especificadas sin preguntar más.
Puede usarse de esta forma:
# slapadd -l datos_en_formato_ldif
y emplear durante las pruebas estos otros parámetros.
Parámetro | Finalidad |
---|---|
-b sufijo_raíz | Seleccionar base de datos por sufijo. |
-n número | Seleccionar base de datos por número. |
-j número_de_línea | Saltar al número de línea indicado y continuar desde allí la carga de entradas. |
slapcat
Obtiene el contenido de un directorio LDAP en formato LDIF adecuado para suministrarlo como entrada a slapadd y de esa forma migrar un directorio a otro.
Las entradas están ordenadas según como aparezcan en la base datos y no en orden jerárquico e incluyen todos los atributos almacenados.
Entre otros parámetros permite emplear un filtro y discriminar por base de datos con un sufijo:
Parámetro | Finalidad |
---|---|
-a filter | Filtro de selección de entradas. |
-b sufijo | Sufijo raíz con el que seleccionar la base de datos. |
-n numero | Número con el que seleccionar la base de datos. |
-s subárbol | Subárbol desde el que comenzar la búsqueda de entradas. Implica el parámetro -b si no se ha utilidado. |
migrationtools
Este paquete de programas facilita mucho el paso de las bases de datos del sistema a un directorio LDAP.
La versión empaquetada en Debian incluye un archivo de configuración en /etc/migrationtools/migrate_common.ph
que está enlazado en el directorio donde están los scripts (/usr/share/migrationtools
); recomiendan modificar su contenido para ajustarlo a la instalación y proceder a ejecutar los programas de migración desde allí.
Nota: el planteamiento anterior no me gusta en absoluto, demasiado forzado, pero dado que sólo va a realizarse una vez durante la migración (y ésta tampoco se debería repetir muy a menudo) podré vivir con ello.
La siguiente tabla resume los parámetros que pueden cambiarse:
Parámetro en archivo | Variable de entorno | Uso y significado | Valor predeterminado |
---|---|---|---|
$DEFAULT_MAIL_DOMAIN | LDAP_DEFAULT_MAIL_DOMAIN | Si es necesario se emplea para:
|
padl.com |
$DEFAULT_MAIL_HOST | LDAP_DEFAULT_MAIL_HOST | mail.padl.com | |
$DEFAULT_BASE | LDAP_BASEDN | Sufijo raíz del directorio. Si no se proporciona se construye partiendo del dominio de correo. | dc=padl,dc=com |
$EXTENDED_SCHEMA | LDAP_EXTENDED_SCHEMA | No (0) | |
$USE_UTF8 | Si está habilitado emplea el juego de caracteres UTF-8, en lugar de usar un ascii de 7bit con la transformación de algunas letras iso8859-1. | Sí (1) | |
$IGNORE_UID_BELOW | Ignora los usuarios cuyo identificador esté por debajo de lo indicado. | 1000 | |
$IGNORE_GID_BELOW | Ignora los grupos cuyo identificador esté por debajo de su valor. | 100 | |
$IGNORE_UID_ABOVE | Ignora todos los usuarios cuyo identificador esté por encima del valor indicado. | 9999 | |
$IGNORE_GID_ABOVE | Ignora todos los grupos cuyo identificador esté por encima del valor indicado. | 9999 |
Revisando este archivo de configuración vemos que también existen otros valores que pueden ser conveniente cambiar; hablo del hash $NAMINGCONTEXT
que relaciona el origen de los datos con su situación jerárquica en el directorio LDAP. Por ejemplo la clave
$NAMINGCONTEXT{'passwd'} = "ou=People";
es la encargada de situar las cuentas de usuario en la unidad organizativa correspondiente.
La lista de programas cubre un montón de bases de datos textuales del sistema y algunos de ellos pueden emplearse en línea o desconectados. Es decir, con el servidor LDAP detenido o en funcionamiento.
Un ejemplo de uso es el siguiente:
# cd /usr/share/migrationtools
# ./migrate_passwd.pl
...
...
...
dn: uid=pelaez,ou=People,dc=example
uid: pelaez
cn: Pelaez Cansado
givenName: Pelaez
sn: Cansado
mail: pelaez@example.net
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: krb5Principal
objectClass: shadowAccount
userPassword: {crypt}XXXXXXXXXXXXXXXX
shadowLastChange: 14910
shadowMax: 99999
shadowWarning: 7
krb5PrincipalName: pelaez@EXAMPLE.NET
loginShell: /bin/bash
uidNumber: 1018
gidNumber: 1003
homeDirectory: /home/pelaez
gecos: Pelaez Cansado,,,
$