Tabla de Contenidos
210.3 LDAP client usage
Pertenece a Topic 210: Network Client Management
- Weight: 2
- Description: Candidates should be able to perform queries and updates to an LDAP server. Also included is importing and adding items, as well as adding and managing users.
- Key Knowledge Areas:
- LDAP utilities for data management and queries
- Change user passwords
- Querying the LDAP directory
- Terms and Utilities:
ldapsearchldappasswdldapaddldapdelete
LDAP
LDAP (Lightweight Directory Access Protocol) permite mantener un directorio con elementos clasificados. Para lo que se utiliza fundamentalmente es para almacenar usuarios con sus características de cara a la autenticación. El Directorio Activo de Windows se basa en este protocolo.
Se trata de generar elementos, meternos en categorías, unirlos a grupos… Y luego poder hacer consultas contra ese servidor LDAP (autenticación, información…)
Herramientas
En Linux hay herramientas por línea de comandos que permiten realizar operaciones en los servidores LDAP. Estas herramientas generalmente las proporciona el paquete ldap-utils (Debian) y openldap-clients (RedHat).
ldapsearch
Comando que permite efectuar peticiones a un directorio LDAP y recuperar el resultado en formato LDIF.
Sintaxis:
ldapsearch -x -D <dn_admin> -W -h <ip_servidor> -b <contexto> -s sub <atributo>=<valor>
-x: utilizar una autenticación simple (caso general).-b <contexto>: realizar la búsqueda a partir del DN del contenedor del contexto.-D <dn_admin>: realiza la autenticación con el nombre distinguidodn_admin.-W: solicitar interactivamente la contraseña. Puede reemplazarse por-wseguido de la contraseña sin cifrar en la línea de comandos.-h <ip_servidor>: el comando va dirigido al servidor cuya dirección esip_servidor-s sub: realiza una búsqueda recursiva en todos los niveles por debajo del contexto de búsqueda.<atributo>: el nombre del atributo que será el criterio de búsqueda.<valor>: el valor del atributo buscado. El carácter * representa cualquier valor existente.
Ejemplo:
usuario@ubuntu:~$ ldapsearch -x -D cn=admin,dc=example,dc=com -W -h 172.17.7.20 -b ou=usuarios,dc=example,dc=com -s sub telephoneNumber=91*
Iniciamos con el usuario admin conectándonos al servidor LDAP en example.com (172.17.7.20) y dentro de la unidad organizativa usuarios estamos pidiendo todos los números de teléfono.
# extended LDIF # # LDAPv3 # base <dc=example,dc=com> with scope subtree # filter: telephoneNumber=91* # requesting: ALL # # toto, madrid, example.example dn: cn=toto,ou=madrid,dc=example,dc=net objectClass: person cn: toto sn: toto telephoneNumber: 9123456789 # tutu, madrid, example.com dn: cn=tutu,ou=madrid,dc=example,dc=com objectClass: person cn: tutu sn: tutu telephoneNumber: 9178945632 # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
ldapadd
Comando que lee el contenido de un archivo LDIF que contiene los datos que se modificarán y los añade al directorio.
ldapadd -x -D <dn_admin> -W -h <ip_servidor> -f <archivo_ldif>
| Parámetros | Descripción |
|---|---|
-x | Utilizar una autentificación simple (caso general). |
-D dn_admin | Realiza la autentificación con el nombre distinguido dn_admin. |
-W | Solicitar interactivamente la contraseña. Puede reemplazarse por -w (minúscula) seguido de la contraseña sin encriptar en la línea de comandos. |
-h ip_servidor | El comando va dirigido al servidor cuya dirección es ip_servidor. |
-f archivo_ldif | Añade los objetos especificados en el archivo archivo_ldif. |
El archivo_ldif es un fichero de texto que puede ser de la siguiente manera (ejemplo de user.ldif):
dn: cn=Jesus,ou=usuarios,dc=example,dc=com objectClass: person cn: Jesus sn: Jesus telephoneNumber: 987654321
Si queremos añadir un usuario:
ldapadd -D cn=admin,dc=example,dc=com -W -h 172.17.7.20 -f user.ldif
ldapmodify
Comando que modifica objetos existentes, también se usa con un archivo LDIF como argumento y sus parámetros de
uso son los mismos que los del comando ldapadd.
ldapmodify -D <dn_admin> -W -h <ip_servidor> -f <archivo_ldif>
Ejemplo de fichero change.ldif:
dn: cn=Jesus,ou=usuarios,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: 987654344
Modificamos el usuario:
ldapmodify -D cn=admin,dc=example,dc=com -W -h 172.17.7.20 -f change.ldif
ldapdelete
Comando que elimina objetos existentes, puede emplearse directamente sin usar un archivo LDIF.
root@server# ldapdelete -x -D cn=admin,dc=example,dc=com -W -h 172.17.7.20 cn=Jesus,ou=usuarios,dc=example,dc=com
cn=Jesus,ou=usuarios,dc=example,dc=com es el Distinguished Name (DN) del usuario.
ldappasswd
Comando permite asignar una contraseña encriptada a un objeto usuario existente en el directorio.
ldappasswd -x -D <dn_admin> -W -h <ip_servidor> -s <contraseña> <dn_usuario>
-s <contraseña>: la contraseña que se desea asignar al nuevo usuario. Puede reemplazarse por-Spara introducir interactivamente la nueva contraseña. Ojo, primero se pide siempre la contraseña del administrador del LDAP.
Ejemplo:
root@server# ldappasswd -x -D cn=admin,dc=example,dc=com -W -h 172.17.7.20 -s patata1234 cn=Jesus,ou=usuarios,dc=example,dc=com
Configuración
Cada una de las utilidades por línea de comandos puede encontrar algunos elementos de configuración en el archivo
/etc/ldap/ldap.conf:
BASE <contexto> HOST <ip_servidor>
BASE <contexto>: realiza las búsquedas a partir del DN del contenedorcontexto(dc=example,dc=com)HOST <ip_servidor>: las peticiones se dirigen al servidor cuya dirección esip_servidor
También se puede declarar el contexto base de LDAP mediante la variable global LDAPBASE.
Con cualquiera de esas dos posibilidades, no tendremos que estar introduciendo siempre el contexto e IP del servidor LDAP en todas las consultas.
