LDAP (Lightweigh Directory Access Protocol) es esencialmente un servicio de directorio que nos va a permitir almacenar la información necesaria de nuestra organización (usuarios, grupos, hosts, dns, dhcp, ...) en una base de datos optimizada para consultas.
En nuestro trabajo diario usamos con mucha frecuencia ldap, aunque lo cierto es que no siempre necesitamos recurrir a herramientas de línea de comandos como ldapsearch, ldapadd, ldapmodify o ldapdelete, que forman parte del paquete ldap-utils y gestionamos nuestra B.D. ldap con herramientas como phpldapadmin o nuestro superútil controlies.
No obstante, cuando tenemos que procesar un conjunto de registros de una manera más o menos automatizada, puede venirnos muy bien echar mano de éstas.
No obstante, cuando tenemos que procesar un conjunto de registros de una manera más o menos automatizada, puede venirnos muy bien echar mano de éstas.
El árbol de directorio de ldap se encuentra organizado mediante los siguientes componentes:
- dc: domain component
- ou: organizational unit
- dc=instituto,dc=extremadura,dc=es
- ou=People,dc=instituto,dc=extremadura,dc=es
- ou=Group,dc=instituto,dc=extremadura,dc=es
Como ldapsearch tiene muchísimas opciones, y me parece un poco rollo listarlas, vamos a ver cómo usar ldapsearch mediante unos cuantos ejemplos y si alguien necesita más información, puede recurrir al man:
# man ldapsearch
Primer ejemplo.- Obtener los datos de usuarios que tengan un objectClass=inetOrgPerson.
# ldapsearch -xLLL -h ldap -b "dc=instituto,dc=extremadura,dc=es" "(objectClass=inetOrgPerson)"
- Con la opción -x estamos indicando a ldapsearch que queremos usar autentificación simple.
- Con la opción -LLL indicamos a ldapsearch que deseamos obtener una salida LDAPv1.
- Con la opción -h host indicamos el servidor ldap en el que vamos a realizar la búsqueda.
- Con la opción -b base indicamos cuál es el punto del árbol ldap desde donde se debe realizar la búsqueda.
- Por último, especificamos un filtro de búsqueda. En el ejemplo: "(objectClass=inetOrgPerson)"
Segundo ejemplo.- Obtener los datos de usuarios que tengan un objectClass=inetOrgPerson, haciendo la consulta con un usuario autentificado:
# ldapsearch -xLLL -h ldap -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -W -b "ou=People,dc=instituto,dc=extremadura,dc=es" "(objectClass=inetOrgPerson)"Si os fijáis, la única diferencia con el caso anterior son las siguientes opciones:
- Con -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" indicamos el usuario con el que vamos a realizar la consulta.
- Con -W le indicamos al comando ldapsearch que nos pida la contraseña.
- Si quisiéramos especificar directamente la contraseña, utilizaríamos la opción -w password.
Tercer ejemplo.- Obtener los datos de usuarios que tengan un objectClass=inetOrgPerson, haciendo la consulta con un usuario autentificado y especificando la password del usuario en la línea de comandos:
Cuarto ejemplo.- Obtener los datos de usuarios que tengan un objectClass=inetOrgPerson, haciendo la consulta con un usuario autentificado, utilizando una autentificación SSL/TLS:
# ldapsearch -xLLL -H "ldaps://ldap:636" -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -W -b "ou=People,dc=instituto,dc=extremadura,dc=es" "(objectClass=inetOrgPerson)"# ldapsearch -xLLL -h ldap -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -w mipassword -b "ou=People,dc=instituto,dc=extremadura,dc=es" "(objectClass=inetOrgPerson)"
Cuarto ejemplo.- Obtener los datos de usuarios que tengan un objectClass=inetOrgPerson, haciendo la consulta con un usuario autentificado, utilizando una autentificación SSL/TLS:
Quinto ejemplo.- Imaginemos que tenemos almacenados los datos del host asignado a cada usuario mediante el objectClass=hostObject y queremos obtener los datos de aquellos usuarios que tengan asignado el host "a01-o02". Podríamos hacer una consulta anónima con un filtro compuesto:
# ldapsearch -xLLL -h ldap "(&(objectClass=hostObject)(host=a01-o02))"
De este modo, obtendríamos todos los atributos del usuario o usuarios que tengan asignado el host a01-o02.
Sexto ejemplo.- Si ahora quisiéramos obtener tan sólo el atributo host del usuario, no tendríamos más que indicarlo a continuación:
# ldapsearch -xLLL -h ldap "(&(objectClass=hostObject)(host=a01-o02))" host
Séptimo ejemplo.- Si ahora quisiéramos obtener, además del host, el atributo homeDirectory del usuario, no tendríamos más que indicarlo a continuación:
# ldapsearch -xLLL -h ldap "(&(objectClass=hostObject)(host=a01-o02))" host homeDirectory
Octavo ejemplo.- Si ahora quisiéramos obtener el host asignado a un usuario, concreto, no tendríamos más que modificar el filtro de búsqueda:
# ldapsearch -xLLL -h ldap "(&(objectClass=hostObject)(uid=ponente)(host=*))" host
Noveno ejemplo.- Si quisiéramos obtener tan sólo el nombre del host asignado al alumno sin la información del dn, no tendríamos más que filtrar la salida con comandos. Por ejemplo:
# ldapsearch -xLLL -h ldap "(&(objectClass=hostObject)(uid=ponente)(host=*))" host | grep "host:" | cut -f2 -d" "
Décimo ejemplo.- Por último, si quisiéramos consultar el e-mail de todos los usuarios de nuestro servidor ldap, podríamos hacer la siguiente búsqueda:
Publicado por primera vez en http://enavas.blogspot.com.es
0 comentarios:
Publicar un comentario