29.4. Administración de datos en el directorio LDAP

OpenLDAP proporciona al administrador numerosos programas para gestionar los datos en el directorio LDAP. A continuación le presentamos los cuatro programas más importantes para añadir, eliminar, examinar y modificar los datos existentes.

29.4.1. Introducir datos en el directorio LDAP

Como condición previa para la introducción de nuevas entradas, la configuración del servidor LDAP en /etc/openldap/lsapd.conf ha de ser correcta y apta para su aplicación, es decir, debe contener las instrucciones adecuadas para suffix, directory, rootdn, rootpw e index. La introducción de entradas en OpenLDAP puede llevarse a cabo con el comando ldapadd. Por razones prácticas se recomienda añadir los objetos a la base de datos en forma de paquetes. Con este fin, LDAP contempla el formato LDIF (LDAP Data Interchange Format). Un archivo LDIF es un simple archivo de texto que puede estar formado por un número indeterminado de pares de atributo y valor. Puede consultar los objetos y atributos disponibles en los archivos de esquemas indicados en slapd.conf. El archivo LDIF utilizado para crear el armazón del ejemplo de la Figura 29.1, “Estructura de un directorio LDAP” podría presentar el siguiente aspecto (ver Ejemplo 29.7, “Ejemplo de archivo LDIF”):

Ejemplo 29.7. Ejemplo de archivo LDIF

# La organización SUSE
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# La unidad de organización Desarrollo (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# La unidad de organización Documentación (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# La unidad de organización Administración de Sistemas (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]Codificación de los archivos LDIF

LDAP funciona con UTF-8 (Unicode), por lo que caracteres especiales como acentos, etc., han de introducirse con la codificación correcta. Le recomendamos que emplee un editor que soporte UTF-8 tal como Kate o las versiones más recientes de Emacs. Si se hubiera cambiado la codificación en su sistema, tiene que renunciar a la introducción de caracteres especiales o usar recode para convertir el texto a UTF-8.

Guarde el archivo como .ldif y páselo al servidor con el siguiente comando:

ldapadd -x -D <dn of the administrator> -W -f <file>.ldif

La primera opción -x indica que en este caso no se va a producir una autenticación a través de SASL. -D identifica al usuario que realiza esta operación. Introduzca aquí el DN válido del administrador tal y como ha sido configurado en slapd.conf (en nuestro ejemplo, cn=admin,dc=suse,dc=de). -W evita tener que introducir la contraseña en la línea de comandos (texto en claro) y activa una pregunta por separado de la contraseña. Dicha contraseña ha sido especificada previamente en slapd.conf en la entrada rootpw. -f pasa el archivo al servidor. A continuación se muestra el Ejemplo 29.8, “ldapadd de ejemplo.ldif” de ldapadd:

Ejemplo 29.8. ldapadd de ejemplo.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif 

Enter LDAP password: 
adding new entry "dc=suse,dc=de" 
adding new entry "ou=devel,dc=suse,dc=de" 
adding new entry "ou=doc,dc=suse,dc=de" 
adding new entry "ou=it,dc=suse,dc=de"

Los datos de usuario de los empleados de cada uno de los departamentos pueden introducirse en archivos LDIF adicionales. Por medio del siguiente ejemplo tux.ldif (ver Ejemplo 29.9, “Archivo LDIF para Tux”), el empleado Tux es añadido al nuevo directorio LDAP:

Ejemplo 29.9. Archivo LDIF para Tux

# El empleado Tux 
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
objectClass: inetOrgPerson 
cn: Tux Linux 
givenName: Tux 
sn: Linux
mail: tux@suse.de 
uid: tux 
telephoneNumber: +34 123 4567-8

Un archivo LDIF puede contener un número ilimitado de objetos. Es posible pasar al servidor árboles de directorios completos de una vez o sólo partes de los mismos, como por ejemplo objetos sueltos. Si necesita modificar los datos con frecuencia, se recomienda el fraccionamiento en objetos individuales para evitar laboriosas búsquedas en archivos grandes del objeto que debe ser modificado.

29.4.2. Modificar datos en el directorio LDAP

Los registros de datos pueden modificarse con la herramienta ldapmodify. El método más fácil consiste en editar el archivo LDIF respectivo y pasar de nuevo el archivo modificado al servidor LDAP. Por ejemplo, para cambiar el número de teléfono del empleado Tux de +34 123 4567-8 a +34 123 4567-10, edite el archivo LDIF como se muestra en el Ejemplo 29.10, “Archivo LDIF tux.ldif modificado”.

Ejemplo 29.10. Archivo LDIF tux.ldif modificado

# El empleado Tux 
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify 
replace: telephoneNumber 
telephoneNumber: +34 123 4567-10

Utilice el siguiente comando para importar el archivo modificado al directorio LDAP:

ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

Como alternativa, también puede introducir directamente en la línea de comandos los atributos que deben ser modificados con ldapmodify. En este caso proceda como se describe a continuación:

  1. Ejecute ldapmodify e introduzca su contraseña:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    
    Enter LDAP password:
    
  2. Introduzca los cambios siguiendo la estructura definida a continuación y el orden especificado:

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +34 123 4567-10
    

Puede obtener información detallada sobre ldapmodify y su sintaxis en la página del manual correspondiente (ldapmodify(1)).

29.4.3. Buscar o leer datos del directorio LDAP

OpenLDAP ofrece ldapsearch, una herramienta de línea de comandos para examinar y leer datos en el directorio LDAP. La sintaxis de un comando de búsqueda sencillo sería la siguiente:

ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

La opción -b define la base de búsqueda, es decir, la sección del árbol donde va a efectuarse la búsqueda (en este caso, dc=suse,dc=de). Si desea realizar una búsqueda más depurada en subsecciones determinadas del directorio LDAP (por ejemplo sólo en el departamento devel), puede definir dicha sección en ldapsearch con la opción -b. La opción -x especifica la utilización de una autenticación sencilla. (objectClass=*) indica que desea leer todos los objetos incluidos en el directorio. Puede utilizar este comando tras la creación de un nuevo árbol de directorios para comprobar si todas las entradas han sido aceptadas correctamente y si el servidor responde en la forma deseada. Puede obtener información adicional sobre el uso de ldapsearch en su página del manual (ldapsearch(1)).

29.4.4. Borrar datos del directorio LDAP

Utilice el comando ldapdelete para borrar entradas del directorio LDAP. Su sintaxis es muy semejante a la de los comandos descritos en líneas superiores. Por ejemplo, para borrar la entrada completa de Tux Linux, introduzca el comando:

ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \ 
Linux,ou=devel,dc=suse,dc=de

SUSE LINUX Manual de administración 9.3