LDAP (parte 4): Buscar, modificar y eliminar elementos del directorio en Ubuntu 14.04 LTS

Publicado por P. Ruiz en

OpenLDAP logoHoy seguimos avanzando en la explicación sobre OpenLDAP. Si has seguido nuestros artículos publicados sobre esta serie (Instalar OpenLDAP en Ubuntu 14.04 LTS, Iniciar la estructura del directorio y Añadir usuarios y grupos de forma manual), ya tienes un directorio en funcionamiento.

Llegados a este punto, lo siguiente será aprender a buscar objetos, a modificar su contenido e incluso eliminarlos.

Planteamiento de partida

Para realizar las tareas de hoy, supondremos que hemos seguido las indicaciones del artículo anterior para crear un nuevo usuario llamado lgomez. En realidad, hemos editado el archivo usr.ldif y hemos cambiado los datos del primer usuario (jlopez) para sustituirlos por los des nuevo usuario (lgomez). En particular, hemos cambiado los campos uid, cn, sn, uidNumber, homeDirectory y givenName, pero hemos «olvidado» cambiar la dirección de mail.

Una vez modificado el archivo, ejecutamos el comando:

sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f usr.ldif

Para tener más información sobre la estructura de los archivos LDIF, te recomiendo consultar el Capítulo 12: Instalar y configurar OpenLDAP en Ubuntu de nuestro libro Sistemas Operativos en Red (2ª edición).

Además, puedes consultar todos los artículos prácticos publicados en SomeBooks.es sobre LDAP. haciendo clic aquí.

Buscar elementos del directorio

Como hemos visto más arriba, la utilidad de línea de comandos que permite realizar búsquedas en el directorio LDAP es ldapsearch. Se trata de una utilidad con multitud de opciones, pero aquí vamos a hacer un uso básico de ella. Por ejemplo, podríamos buscar todos los usuarios usando la siguiente sintaxis:

ldapsearch -xLLL -b "dc=somebooks,dc=local" uid=* sn givenName mail

(Observa que es la misma orden que escribimos en el apartado anterior, pero ahora hemos utilizado un asterisco como valor de uid). Aunque no vamos a entrar en muchos detalles, al menos vamos a explicar los argumentos que estamos usando para este ejemplo:

  • -x  indica que usaremos autentificación simple.

  • -LLL sirve para que la salida sea del tipo LDAPv1.

  • -b va seguida del punto del árbol donde debe comenzar la búsqueda. En este caso, dc=somebooks,dc=local.

  • Después se incluye la condición que deberán cumplir los objetos buscados. En el ejemplo, cualquier valor (*) para el atributo uid.

  • Por último, se incluye el nombre de los atributos que queremos obtener en el resultado de la consulta.

Escribimos la orden y pulsamos la tecla Intro.

Como puedes ver en la imagen siguiente, el resultado de la consulta se obtiene en formato LDIF, lo que facilitará redirigirlo a un archivo y usarlo como copia de seguridad o incluso como método de exportación de datos a otra implementación de OpenLDAP.

Salida de la consulta.

Modificar entradas del directorio

Si te fijas en la salida de la consulta anterior, existe un error: el valor del correo electrónico de los dos últimos usuarios es el mismo. Esta situación nos ofrece la excusa perfecta para comprobar cómo podemos cambiar el valor del atributo mail para el usuario lgomez.

El comando que usaremos en este caso es ldapmodify, que permite cambiar el contenido de cualquier atributo, añadir atributos nuevos, eliminarlos etc. Dado que la sintaxis es más compleja nos apoyaremos en un archivo LDIF que especifique los cambios que necesitamos realizar. En nuestro caso, el archivo tendrá el siguiente aspecto:

dn: uid=lgomez,ou=usuarios,dc=somebooks,dc=local
changetype: modify
replace: mail
mail: luis.gomez@somebooks.local

Como puedes suponer, la primera línea identifica la cuenta en la que realizaremos el cambio. La segunda indica el tipo de operación a realizar, la tercera identifica el atributo y, por último, la cuarta incluye el nuevo valor que debe asignarle. Como en el resto del capítulo, usaremos el editor gEdit para crear el archivo, que para este ejemplo llamaremos cambios.ldif.

Ejecutamos el editor, enviándole como argumento el nombre del archivo.

Una vez abierto el editor, escribimos el texto del ejemplo.

… Y nos aseguramos de guardar los cambios antes de cerrar la ventana.

Por último, ejecutamos la utilidad ldapmodify, indicándole el nombre del archivo donde se encuentran los datos:

ldapmodify -x -D cn=admin,dc=somebooks,dc=local -W -f cambios.ldif

Escribimos la orden y pulsamos Intro.

Después de escribir la contraseña, el comando nos responde con los datos de la entrada que ha sido modificada.

Comprobamos que, efectivamente, la respuesta se corresponde con la cuenta indicada en el archivo LDIF.

Si quieres comprobar que los cambios se han efectuado correctamente, basta con volver a utilizar la utilidad ldapsearch, tal y como hicimos en el punto anterior.

Observamos que el valor del atributo mail de la cuenta lgomez ha sido modificado.

Borrar entradas del directorio

La utilidad que permite eliminar entradas del directorio se llama ldapdelete. Para utilizarla, sólo tenemos que aportar los datos del objeto a borrar y los datos de la cuenta administrador que debe permitirlo. La sintaxis será como sigue:

ldapdelete -x -W -D 'cn=admin,dc=somebooks,dc=local' "uid=lgomez,ou=usuarios,dc=somebooks,dc=local"

Escribimos la orden en la Consola.

Después de escribir la contraseña, parecerá que no ha ocurrido nada. Sin embargo, el objeto habrá sido eliminado.

El comando no ofrece ninguna salida.

Para comprobar que la eliminación ha sido efectiva, podemos volver a utilizar la utilidad ldapsearch.

Observamos que el objeto ha desaparecido.

Y esto es todo por el momento. Espero que te resulte útil.