25.4. Gestión de datos en el directorio LDAP

OpenLDAP ofrece una serie de herramientas para la administración de datos en el directorio LDAP. Las cuatro herramientas más importantes para añadir, suprimir, buscar y modificar los datos almacenados se explican brevemente a continuación.

25.4.1. Inserción de datos en un directorio LDAP

Una vez que la configuración del servidor LDAP en /etc/openldap/lsapd.conf sea correcta y esté lista (presenta las entradas apropiadas para suffix, directory, rootdn, rootpw e index), siga con la introducción de registros. OpenLDAP cuenta con el comando ldapadd para esta tarea. Si es posible, añada los objetos a la base de datos en paquetes por razones prácticas. LDAP es capaz de procesar el formato LDIF (formato de intercambio de datos de LDAP) para esto. Un archivo LDIF es un archivo de texto que puede contener un número arbitrario de pares de atributo y valor. Consulte los archivos de esquema declarados en slapd.conf para las clases y atributos de objetos disponibles. El archivo LDIF para crear un marco general para el ejemplo en la Figura 25.1, “Estructura de un directorio LDAP” tendría el aspecto del del Ejemplo 25.7, “Ejemplo de un archivo LDIF”.

Ejemplo 25.7. Ejemplo de un archivo LDIF

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]Codificación de archivos LDIF

LDAP funciona con UTF-8 (Unicode). Las diéresis deben codificarse correctamente. Utilice un editor que sea compatible con UTF-8, como Kate o versiones recientes de Emacs. De lo contrario, evite las diéresis y otro tipo de caracteres especiales o use recode para volver a codificar la entrada en UTF-8.

Guarde el archivo con el sufijo .ldif y, a continuación, trasládelo al servidor con este comando:

 
ldapadd -x -D <dn del administrador> -W -f <archivo>.ldif 

-x desconecta la autenticación con SASL en este caso. -D indica el usuario que llama a la operación. El DN válido del administrador se introduce tal y como se ha configurado en slapd.conf. En el ejemplo actual, es cn=admin,dc=suse,dc=de. -W evita tener que introducir la contraseña en la línea de comando (en texto no cifrado) y activa un indicador de contraseña aparte. Esta contraseña se ha determinado previamente en slapd.conf con rootpw. -f traslada el nombre del archivo. Consulte los detalles de la ejecución del comando ldapadd en el Ejemplo 25.8, “ldapadd con ejemplo.ldif”.

Ejemplo 25.8. ldapadd con ejemplo.ldif

 
ldapadd -x -D cn=admin,dc=suse,dc=de -W -f ejemplo.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 usuarios se pueden preparar en archivos LDIF independientes. El Ejemplo 25.9, “Datos de LDIF para Tux” añade Tux al nuevo directorio LDAP.

Ejemplo 25.9. Datos de LDIF para Tux

# coworker 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: +49 1234 567-8

Los archivos LDIF pueden contener un número arbitrario de objetos. Es posible enviar ramas completas al servidor de una vez o sólo partes, tal y como se muestra en el ejemplo de los objetos individuales. Si es necesario modificar algunos datos con más frecuencia, se recomienda realizar una pequeña subdivisión de los objetos individuales.

25.4.2. Modificación de datos en el directorio LDAP

La herramienta ldapmodify sirve para modificar los datos almacenados. La manera más sencilla de hacerlo es modificar el archivo LDIF y, seguidamente, mandar el archivo modificado al servidor LDAP. Para cambiar el número de teléfono del usuario Tux de +49 1234 567-8 a +49 1234 567-10, edite el archivo LDIF como en el Ejemplo 25.10, “Archivo LDIF modificado tux.ldif”.

Ejemplo 25.10. Archivo LDIF modificado tux.ldif

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

Importe el archivo modificado al directorio LDAP con el siguiente comando:

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

De manera alternativa, envíe los atributos que va a cambiar directamente a ldapmodify. Este procedimiento se describe a continuación:

  1. Inicie ldapmodify e introduzca la contraseña:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  2. Introduzca los cambios con cuidado teniendo en cuenta el orden de la sintaxis que se describe a continuación:

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

Puede encontrar información detallada acerca de ldapmodify y la sintaxis en la página Man ldapmodify(1).

25.4.3. Búsqueda o lectura de datos desde un directorio LDAP

OpenLDAP ofrece, mediante el comando ldapsearch, una herramienta de línea de comando para buscar datos en un directorio LDAP y leer datos de él. Una consulta sencilla tendría la sintaxis siguiente:

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

La opción -b determina la base de la búsqueda (la sección del árbol en la que debe realizarse la búsqueda). En el caso actual, es dc=suse,dc=de. Para realizar una búsqueda más precisa en subsecciones concretas del directorio LDAP (por ejemplo, sólo dentro del departamento devel), pase esta sección a ldapsearch con -b. -x pide la activación de la autenticación simple. (objectClass=*) declara que deben leerse todos los objetos contenidos en el directorio. Esta opción de comando puede usarse tras la creación de un árbol de directorios nuevo para comprobar que se han registrado todas las entradas correctamente y que el servidor responde tal y como se desea. Puede encontrar más información sobre el uso de ldapsearch en la página Man correspondiente (ldapsearch(1)).

25.4.4. Supresión de datos de un directorio LDAP

Suprima las entradas no deseadas con ldapdelete. La sintaxis es similar a la de los comandos descritos anteriormente. Para suprimir, por ejemplo, la entrada completa de Tux Linux, emita el siguiente comando:

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