Operaciones Avanzadas de Búsqueda en Directorios LDAP con ldapsearch
Clasificado en Informática
Escrito el en español con un tamaño de 4,38 KB
Estructura del Directorio LDAP
El árbol de directorio de LDAP (Lightweight Directory Access Protocol) se organiza mediante los siguientes componentes fundamentales:
- dc: domain component (componente de dominio)
- ou: organizational unit (unidad organizativa)
De este modo, podemos definir una base de directorio (Base DN) como:
dc=instituto,dc=gandia,dc=es
Dentro de esta base, podemos tener unidades organizativas (Organizational Units - OUs) para almacenar usuarios, como:
ou=People,dc=instituto,dc=gandia,dc=es
O unidades organizativas para almacenar grupos:
ou=Group,dc=instituto,dc=gandia,dc=es
Operaciones Comunes de Búsqueda con ldapsearch
A continuación, se presentan ejemplos prácticos de cómo realizar diversas consultas en un directorio LDAP utilizando la herramienta de línea de comandos ldapsearch
.
1. Búsqueda de Usuarios con objectClass=inetOrgPerson
(Acceso Anónimo)
Esta operación permite obtener los datos de usuarios que tienen el atributo objectClass
establecido como inetOrgPerson
, realizando una consulta anónima a la base del directorio.
# ldapsearch -xLLL -h ldap -b "dc=instituto,dc=gandia,dc=es" "(objectClass=inetOrgPerson)"
2. Búsqueda Autenticada de Usuarios con objectClass=inetOrgPerson
(Solicitud de Contraseña)
Para obtener los datos de usuarios con objectClass=inetOrgPerson
, realizando la consulta con un usuario autenticado. La contraseña se solicitará interactivamente.
# ldapsearch -xLLL -h ldap -D "cn=admin,ou=People,dc=instituto,dc=gandia,dc=es" -W -b "ou=People,dc=instituto,dc=gandia,dc=es" "(objectClass=inetOrgPerson)"
3. Búsqueda Autenticada con Contraseña en Línea de Comandos
Similar al caso anterior, pero especificando la contraseña del usuario directamente en la línea de comandos. ¡Precaución! Esta práctica no es recomendable en entornos de producción por motivos de seguridad, ya que la contraseña podría quedar expuesta en el historial de comandos o en logs.
# ldapsearch -xLLL -h ldap -D "cn=admin,ou=People,dc=instituto,dc=gandia,dc=es" -w mipassword -b "ou=People,dc=instituto,dc=gandia,dc=es" "(objectClass=inetOrgPerson)"
4. Búsqueda Autenticada con SSL/TLS
Obtener los datos de usuarios con objectClass=inetOrgPerson
, utilizando una autenticación segura mediante SSL/TLS. Se especifica el protocolo ldaps://
y el puerto 636
.
# ldapsearch -xLLL -H "ldaps://ldap:636" -D "cn=admin,ou=People,dc=instituto,dc=gandia,dc=es" -W -b "ou=People,dc=instituto,dc=gandia,dc=es" "(objectClass=inetOrgPerson)"
Búsqueda de Usuarios que NO se Llamen David
Este ejemplo muestra cómo buscar usuarios cuyo atributo sn
(apellido) no sea "david". El operador !
se utiliza para la negación en los filtros de búsqueda LDAP.
# ldapsearch -x -b "ou=People,dc=instituto,dc=gandia,dc=es" "(!sn=david)"
Búsqueda de Usuarios en una Unidad Organizativa Específica (retired
)
Para obtener los usuarios que pertenecen a una unidad organizativa de nombre "retired". Se utiliza el operador lógico &
para combinar condiciones y :dn:
para buscar en el DN relativo.
# ldapsearch -x -b "ou=People,dc=instituto,dc=gandia,dc=es" "(&(objectClass=Person) (ou:dn:=retired))"
Parámetro -s
: Control del Alcance de la Búsqueda
El uso del parámetro -s
en ldapsearch
es fundamental para limitar el alcance de la búsqueda, optimizando el rendimiento y la precisión de las consultas. Sus posibles valores son:
- base: Busca únicamente en la entrada base especificada (Base DN).
- one: Busca solo en los hijos directos de la entrada base.
- sub: Busca en la entrada base y en todos sus descendientes (subárbol). Esta es la opción por defecto si no se especifica el parámetro
-s
.