Preparación para el examen 301 del LPI, Tema 304: Uso

Senior Level Linux Professional (LPIC-3)

En este tutorial, Sean Walberg lo ayuda a prepararse para rendir el examen de Linux Professional Institute Senior Level Linux Professional (LPIC-3). En este cuarto tutorial de una serie de seis tutorials, Sean lo guía en la búsqueda de su árbol de LDAP y en cómo utilizar las herramientas de la línea de comandos. También aprenderá a configurar Microsoft Outlook para consultar su árbol de LDAP.

Sean Walberg, Senior Network Engineer, P.Eng

Photo of Sean WalbergSean Walberg ha estado trabajando con Linux y UNIX desde 1994 en entornos de proveedores de servicios académicos, corporativos y de Internet. Ha escrito extensamente sobre la administración de los sistemas en los últimos años.



15-07-2011

Antes de comenzar

Aprenda lo que estos tutoriales pueden enseñarle y cómo obtener el mayor beneficio de ellos.

Acerca de esta serie

El Linux Professional Institute (LPI) certifica a los administradores de los sistemas ®Linux en tres niveles: nivel junior (también llamado "nivel de certificación 1"), nivel avanzado (también llamado "nivel de certificación 2"), y nivel senior (también llamado "nivel de certificación 3"). Para alcanzar un nivel de certificación 1, debe aprobar los exámenes 101 y 102. Para obtener el nivel de certificación 2, debe aprobar los exámenes 201 y 202. Para obtener el nivel de certificación 3, debe tener una certificación activa del nivel avanzado y aprobar el examen 301 ("core"). Usted también necesitaría aprobar exámenes en otras especialidades en el nivel senior.

developerWorks ofrece los tutoriales a fin de ayudarlo a prepararse para los cinco exámenes para la certificación junior, avanzado y senior. Cada examen abarca varios temas y cada tema posee su correspondiente tutorial de trabajo individual en developerWorks. La tabla 1 lista los seis temas correspondientes a los tutoriales de developerWorks para el examen 301 de LPI.

Tabla 1. Examen 301 de LPI: Tutoriales y temas
Temas del examen 301 de LPITutorial de developerWorksResumen del tutorial
Tema 301LPI exam 301 prep:
Conceptos, arquitectura y diseño
Conozca los detalles acerca de los conceptos y de la arquitectura de LDAP, cómo diseñar e implementar un directorio de LDAP, y acerca de los esquemas.
Tema 302Preparación del examen 301 de LPI:
Instalación y desarrollo
Aprenda cómo instalar, configurar y utilizar el software de OpenLDAP.
Tema 303Preparación del examen 301 de LPI:
Configuración
Aprenda cómo configurar el software de OpenLDAP en detalle.
Tema 304 Preparación del examen 301 de LPI:
Uso
(Este tutorial) Aprenda cómo a buscar en el directorio y a utilizar las herramientas de OpenLDAP. Vea los objetivos detallados.
Tema 305 Preparación del examen 301 de LPI:
Integración y migración
Disponible en breve.
Tema 306 Preparación del examen 301 de LPI:
Planificación de la capacidad
Disponible a la brevedad.

Para aprobar el examen 301 (y alcanzar el nivel de certificación 3), la siguiente información deberá ser verdadera:

  • Usted debería tener varios años de experiencia en lo relacionado con la instalación y el mantenimiento de Linux en una cantidad de computadoras que se utilizan con diversos fines.
  • Usted debería tener experiencia en la integración a diversas tecnologías y sistemas operativos.
  • Usted debería tener una experiencia profesional o estar capacitado para ser un profesional al nivel empresarial de Linux (incluso haber tenido experiencia en alguna otra función).
  • Usted debería conocer los niveles avanzados y empresariales de la administración de Linux incluyendo la instalación, administración, seguridad, localización y resolución de problemas, y el mantenimiento.
  • Usted debería ser capaz de utilizar las herramientas de fuente abierta para medir los problemas relacionados con la planificación de la capacidad y con los recursos para la resolución de problemas.
  • Usted debería tener experiencia profesional en el uso de LDAP para integrar a los servicios® de UNIX y a los servicios de Microsoft® y Windows®, incluyendo Samba, Pluggable Authentication Modules (PAM), e-mail, y Active Directory.
  • Usted debería ser capaz de planificar, crear, diseñar, crear e implementar un entorno completo utilizando Samba y LDAP, así como también medir la planificación de la capacidad y la seguridad de los servicios.
  • Usted debería ser capaz de crear scripts en Bash o Perl o tener conocimiento al menos en un lenguaje de programación de sistemas (tal como el C).

Para continuar con la preparación del nivel 3 de certificación, vea los series developerWorks tutorials for LPI exam 301, así como también el entire set of developerWorks LPI tutorials.

El Linux Professional Institute no respalda ningún tipo de material de preparación de exámenes de terceros o técnicas en particular.

Información acerca de este tutorial

Bienvenidos a "Configuration," el cuarto de los seis tutorials diseñado para prepararlo para el examen 301 de LPI. En este tutorial, usted aprenderá cómo buscar el directorio, cómo utilizar las herramientas de la línea de comandos para la búsqueda y la administración, y cómo configurar las aplicaciones de terceros para utilizar su árbol de LDAP como un servicio de Whitepages.

Este tutorial está organizado de acuerdo con los objetivos de LPI para este tema. En términos generales, esperamos más consultas sobre el examen acerca de los objetivos de mayor importancia.

Objetivos

La Tabla 2 proporciona los objetivos detallados para este tutorial.

Tabla 2. Configuración: Objetivos del examen cubiertos en este tutorial
Objetivo del examen de LPIImportancia de los objetivosResumen de los objetivos
304.1
Buscar el directorio
2Utilizar las opciones avanzadas para buscar el directorio de LDAP
304.2
Herramientas de la línea de comandos LDAP
4Utilizar las diversas herramientas de la línea de comandos para buscar, modificar y administrar el servidor de LDAP
304.3
Whitepages
1Utilice su servidor LDAP como un servicio de Whitepages para las aplicaciones como Microsoft Outlook®

Prerrequisitos

Para obtener el mayor beneficio de este tutorial, usted deberá tener conocimientos avanzados de Linux y un sistema de trabajo de Linux en el que pueda practicar lo comandos cubiertos en el mismo.

Si sus conocimientos fundamentales de Linux están un poco olvidados, es posible que desee revisar primero los tutorials for the LPIC-1 and LPIC-2 exams.

Las diferentes versiones de un programa pueden darle formato a la salida de un modo diferente, por lo que sus resultados no se verán exactamente como en los listados y las estadísticas en este tutorial.

Requisitos del sistema

Para continuar con los ejemplos de este tutorial, usted necesitará una estación de trabajo Linux con un paquete y soporte de OpenLDAP para PAM. Muchas de las distribuciones modernas cumplen con estos requisitos.


Buscar el directorio

Esta sección cubre los materiales para el tema 304.1 para el examen 301 del Senior Level Linux Professional (LPIC-3). Este tema tiene un valor de dos puntos.

En esta sección, aprenda cómo:

  • Utilizar las herramientas de búsqueda de OpenLDAP con las opciones básicas
  • Utilizar las herramientas de búsqueda de OpenLDAP con la opciones avanzadas
  • Optimizar las consultas de búsqueda de LDAP
  • Utilizar los filtros de búsqueda y su sintaxis

Los datos en su árbol son útiles solamente si usted puede encontrar las entradas cuando las necesite. LDAP proporciona un poderoso conjunto de dispositivos que le permite extraer la información de su árbol.

Los fundamentos de la búsqueda

Para buscar un árbol, usted necesita cuatro datos:

  1. Las credenciales del servidor que mantiene el árbol
  2. Un Distinguished Name (DN) en el árbol para basar su búsqueda
  3. Un ámbito de búsqueda
  4. Un filtro de búsqueda

Usted ya ha aprendido sobre las credenciales de los servidores en los tutorials anteriores de esta serie.¡Las credenciales pueden ser nada, lo que las convierte en un enlace anónimo, o pueden ser el DN de una entrada junto con la contraseña. El servidor reconoce estas credenciales en forma implícita como válidas y desea permitirle a usted la búsqueda!

El DN en el que usted basa su búsqueda se llama DN base. Todos los resultados serán o la base del DN misma o sus "hijos". Si su DN base es ou=people,dc=ertw,dc=com, entonces usted podría encontrar cn=Sean Walberg,ou=people,dc=ertw,dc=com, pero esto no sucederá cn=Users,ou=Groups,dc=ertw,dc=com, ya que se sitúa fuera del DN base que usted estaba tratando de buscar.

El ámbito determina qué entradas del DN base serán buscadas. Es posible que usted desee limitar el ámbito debido a razones relacionadas con la performance, o porque sólo ciertos "hijos" del DN base contienen la información que usted desea. El ámbito de búsqueda por omisión, subordinate (generalmente abreviado como sub), incluye el DN base y todos los "hijos". Usted puede buscar solamente el DN base con un ámbito base, como cuando usted quiere probar ver si existe alguna entrada. El ámbito de búsqueda llamado one busca solamente el DN base de los "hijos" inmediatos y excluye cualquier "nieto" y el DN base también. La figura 1 muestra un árbol y las entradas que deberían ser incluidas en los tres ámbitos diferentes de búsqueda.

Figura 1. Tres ámbitos diferentes de búsqueda
Tres ámbitos diferentes de búsqueda

La parte más poderosa (y compleja) de la búsqueda es la del filtro de búsqueda. Las credenciales, el DN base y el ámbito limitan qué entradas serán buscadas, pero es query la que examina cada registro y devuelve solamente los que se ajustan a sus criterios.

Filtros de búsqueda simple

Los filtros de búsqueda están entre paréntesis. Dentro de los paréntesis se encuentran un par de attribute=value. Un filtro de búsqueda simple sería (objectClass=inetOrgPerson), el que encontrará cualquier entrada con un objectClass inetOrgPerson. El atributo en sí mismo no distingue mayúsculas de minúsculas, pero el valor puede o no depender de cómo el atributo es definido en el esquema. Recuerde del primer tutorial, LPI exam 301 prep:
Conceptos, arquitectura y diseño
, que el esquema define los atributos y sus propiedades. Una de las propiedades del atributo es ver si las comparaciones distinguen las mayúsculas de las minúsculas o no.

Las búsquedas de subcadenas se realizan con el operador de asterisco (*). Buscar (Sean*) para que coincida con cualquier cosa que comience con Sean. El asterisco puede ir en cualquier parte de la cadena, como ser en (* Walberg) para encontrar cualquier cosa que finalice con Walberg, o incluso con S*Wa*berg para encontrar algo que comience con S, que finalice en berg y que contenga Wa en algún lugar en el medio. Usted puede utilizar esto para encontrar el nombre del autor, sin saber si se trata de Sean o Shawn, o Walberg o Wahlberg.

La forma más genérica del operador de asterisco, attribute=* comprueba la existencia del atributo especificado. Para encontrar todas las entradas con direcciones de e-mail definidas, usted puede utilizar (mail=*).

AND, OR y NOT

Puede realizar las operaciones lógicas AND y OR con los operadores "&" y "|" respectivamente. Las cadenas de búsqueda de LDAP ponen al operador frente a las condiciones, por lo que verá filtros como los que se muestran en el Listado 1.

Listado 1. Probar filtros de búsqueda utilizando AND y OR
(|(objectClass=inetOrgPerson)(objectClass=posixAccount))
(&(objectClass=*)(cn=Sean*)(ou=Engineering))
(&(|(objectClass=inetOrgPerson)(objectClass=posixAccount))(cn=Sean*))

La primera cadena de búsqueda en el Listado 1 busca cualquier cosa con un objectClass de inetOrgPerson o posixAccount. Tenga en cuenta que cada componente se encuentra aún entre paréntesis y que el operador OR (|), junto con sus dos opciones de búsqueda, también se encuentran entre otro par de paréntesis.

La segunda cadena de búsqueda es similar, pero comienza con una operación AND en lugar de hacerlo con una OR. Aquí, se deben cumplir tres pruebas diferentes y todas ellas siguen el ampersand en su propio conjunto de paréntesis. La primera cláusula, objectClass=*, coincide con cualquier cosa que tenga objectClass definido (que debiera ser todo, de todos modos). Esta búsqueda de todos los objectClasses se utiliza a menudo como un filtro de búsqueda cuando usted desea hacer coincidir todo y se le pide que ingrese un filtro. La segunda cláusula coincide con todo lo que comienza con Sean.

La tercera cadena de búsqueda muestra un AND y un OR utilizados en forma conjunta en un filtro que busca cualquier cosa con un objectClass ya sea de inetOrgPerson o de posixAccount, y un nombre común que comience con Sean.

El NOT lógico se realiza con el signo de exclamación (!), como con AND y OR. Un NOT lógico sólo tiene un argumento, de tal modo que un solo un par de paréntesis puede seguir al signo de exclamación. El Listado 2 muestra algunos usos válidos y no válidos de NOT.

Listado 2. Cómo utilizar y cómo no utilizar el Not lógico
(!cn=Sean)     # invalid, the ! applies to a filter inside ()
(!(cn=Sean))   # valid
(!(cn=Sean)(ou=Engineering))  # invalid, only one filter can be negated
(!(&cn=Sean*)(ou=Engineering))) # valid, negates the AND clause

En el cuarto ejemplo del Listado 2, la negación se aplica a un filtro AND. Por lo tanto, esa regla devuelve cualquier entrada que no cumpla con ambas cláusulas AND. Tenga cuidado al tratar con la negación de los filtros compuestos, porque los resultados no siempre son intuitivos. El cuarto ejemplo del Listado 2 seguirá devolviendo las entradas con un ou de Engineering si no poseen un nombre común que comience con Sean. Ambas pruebas deberán pasar por el registro para ser excluidas.

Rangos de búsqueda

A menudo es necesario buscar un rango de valores. LDAP proporciona los operadores <= y >= para realizar una consulta sobre un atributo. Cuide de que el signo igual (=) esté incluido, debido a no hay operadores < y >—también usted deberá realizar una prueba de igualdad.

No todos lo atributos enteros pueden ser controlados con los operadores de rango. Ante la duda, verifique el esquema para asegurarse de que el atributo implemente un tipo de orden a través de la palabra clave ORDERING. Recuerde que esto se encuentra en el primer tutorial, LPI exam 301 prep:
Conceptos, arquitectura y diseño
, que un atributo se define en el esquema y que parte de la definición incluye la forma en la que el servidor debería clasificar el atributo.

Buscar coincidencias cerradas

Un directorio LDAP se utiliza con frecuencia para almacenar nombres, lo que lleva a problemas de ortografía. "Sean" también puede ser "Shawn" o "Shaun." LDAP proporciona un operador de "sonidos parecidos", "~=", que devuelve los resultados que suenan parecidos a los de la cadena de búsqueda. Por ejemplo, (cn~=Shaun) devuelve los resultados que poseen un nombre en común que contenga una palabra que suene como "Shaun". En forma implícita en la búsqueda de sonidos parecidos existe una búsqueda de subcadenas, de tal modo que (cn=~Shaun) devolverá los resultados para cn=Shawn Walberg. Sin embargo, la implementación de OpenLDAP no es perfecta, la misma búsqueda no devolverá los resultados para deletrear "Sean".

Buscar el DN

Todos los ejemplos hasta ahora se han centrado en los atributos de la búsqueda, no en la búsqueda del distinguished name (DN) que identifica el registro. A pesar de que el componente del DN se encuentra más a la izquierda, el DN relativo (RDN), aparece como un atributo y por lo tanto es localizable, los filtros de búsqueda presentados hasta el momento no verán el resto del DN.

La búsqueda del DN se realiza a través de un filtro de consulta específico que requiere una coincidencia exacta. El formato esattribute:dn:=value, en donde el atributo es el componente del DN que usted desea buscar, y el valor es la cadena de búsqueda (no se permiten comodines). Por ejemplo, (ou:dn:=People) devolvería todas las entradas que tengan ou=People en el DN, incluyendo al objeto contenedor mismo.

Alterar matchingRule

Por omisión, la mayoría de las cadenas, como la del nombre común, distingue mayúsculas de minúsculas. Si usted quiere reemplazar la regla de coincidencias, puede utilizar una forma similar a la de la búsqueda del DN. Una búsqueda como (ou:caseexactmatch:=people) coincidirá con una unidad organizativa de "people", pero no de "People". Algunas de las reglas de coincidencia comunes son:

  • caseIgnoreMatch coincide con una cadena sin tener en cuenta las mayúsculas. También ignora los espacios en blanco iniciales y finales cuando estos coinciden.
  • caseExactMatch es una cadena de coincidencia que también requiere una capitalización similar entre dos cadenas que están siendo buscadas.
  • octetStringMatch es como una combinación de cadenas, pero no elimina los espacios en blanco, por lo que requiere una coincidencia exacta de byte-por-byte.
  • telephoneNumberMatch busca un número de teléfono que tenga su propio tipo de datos en LDAP.

Usted también puede cambiar la regla de coincidencia de la búsqueda de un DN combinando la búsqueda de DN con la búsqueda de la regla de coincidencia. Por ejemplo, (ou:dn:caseexactmatch:=people) busca un DN que contenga la cadena exacta "people".

Estos dos tipos de búsquedas, la de DN y la de la regla de coincidencia, también son llamadas búsquedas extensibles. Ambas requieren cadenas exactas y no permiten comodines.

Usar ldapsearch

la herramienta de la línea de comandos para buscar el árbol es ldapsearch. Esta herramienta le permite unirse al directorio de varias maneras, ejecute una o más búsquedas, y recupere los datos en el formato LDIF.

La conducta por omisión de ldapsearch es:

  • Intentar realizar la autenticación Simple Authentication and Security Layer (SASL) al servidor
  • Conectarse con el servidor en ldap://localhost:389
  • Usar (objectClass=*) como un filtro de búsqueda
  • Leer la base de la búsqueda de en/etc/openldap/ldap.conf
  • Realizar un sub búsqueda, es decir, incluir la base de búsqueda y todos los "hijos"
  • Devolver todos los atributos del usuario ignorando los atributos operativos (uso interno)
  • Utilizar el LDAP Data Interchange Format (LDIF) extendido para la salida
  • No clasificar la salida

Autenticar el servidor

Si usted no está utilizando SASL, entonces necesita realizar una autenticación simple utilizando el parámetro-x. Por sí mismo, -x realiza un enlace anónimo que es un enlace sin ningún tipo de DN de enlace o contraseña. Dados los otros valores por omisión, ldapsearch -x volcará su árbol completo, a partir de la base de la búsqueda especificada en /etc/openldap/ldap.conf. El Listado 3 muestra el uso de una búsqueda anónima simple.

Listado 3. Una búsqueda anónima simple
$ ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# people, ertw.com
dn: ou=people,dc=ertw,dc=com
ou: people
description: All people in organization
objectClass: organizationalUnit
... output truncated ...

El listado 3 muestra el encabezado y la primera entrada devuelta de una búsqueda anónima simple. Las primeras siete líneas forman el encabezado, y en la modalidad LDIF son comentadas al presionar la tecla numeral (#). Las primeras tres líneas identifican el resto del texto como LDIF ampliado y recuperado utilizando la versión 3 de LDAP. La siguiente línea indica que ningún DN base fue especificado y que una búsqueda de un subárbol fue utilizada. Las dos últimas líneas de texto dan el filtro de búsqueda que es lo más importante, y todos los atributos que fueron solicitados

Usted puede utilizar la opción-LLL para eliminar todos los comentarios de su salida.

Después del encabezado viene cada entrada; cada entrada comienza con un encabezado que describe la entrada y luego la lista de atributos, comenzando con el DN. Los atributos no están clasificados.

Si necesita utilizar un nombre de usuario y una contraseña para conectarse, utilice las opciones -D y -w para especificar un DN y una contraseña de enlace, respectivamente. Por ejemplo, ldapsearch -x D cn=root,dc=ertw,dc=com -w mypassword llevarán a cabo una autenticación simple con el nombre del usuario y la contraseña del DN de origen. Usted también puede elegir escribir la contraseña en un mensaje que no se repita en la pantalla al utilizar -W en lugar de -w password.

También puede conectarse con un servidor diferente al pasarle un Uniform Resource Identifier (URI) a un servidor LDAP remoto utilizando la opción -H, tal como ldapsearch -x -H ldap://192.168.1.1/ para conectarse con un servidor LDAP a 192.168.1.1.

Realizar las búsquedas

Anexe el filtro de búsqueda a su línea de comandos para llevar a cabo una búsqueda. Usted probablemente tendrá que incluir el filtro entre comillas para proteger los caracteres especiales en la cadena de búsqueda a fin de que sean interpretados por shell. El Listado 4 muestra una búsqueda simple en el nombre común.

Listado 4. Una búsqueda simple desde la línea de comandos
$ ldapsearch -LLL -x '(cn=Fred Smith)'
dn: cn=Fred Smith,ou=people,dc=ertw,dc=com
objectClass: inetOrgPerson
sn: Smith
cn: Fred Smith
mail: fred@example.com

la búsqueda en el Listado 4 utiliza la opción -LLL para eliminar los comentarios en la salida y la opción -x para producir una autenticación simple. El parámetro final es una cadena de búsqueda de la entrada Fred Smith. Tenga en cuenta que los paréntesis son utilizados alrededor de la búsqueda, y que las comillas simples son ambas utilizadas para proteger los paréntesis interpretados como una innovación de subshell, y porque la cadena de búsqueda contiene un espacio que haría que "Smith" sea interpretado como un argumento por separado.

El Listado 4 devolvió todos los atributos de Fred Smith. Es un desperdicio de los recursos tanto para el cliente como para el servidor recuperar todos los valores de un registro si sólo uno o dos de los atributos fuesen necesarios. Agregue los atributos que desee ver al final de la línea de comandos ldapsearch para solicitar únicamente dichos atributos. El Listado 5 muestra cómo se ve la búsqueda anterior si usted quisiera conseguir el e-mail de Fred.

Listado 5. Solicitud de la dirección de e-mail de Fred Smith
$ ldapsearch -LLL -x '(cn=Fred Smith)' mail
dn: cn=Fred Smith,ou=people,dc=ertw,dc=com
mail: fred@example.com

El atributo mail es anexado a la línea de comandos del Listado 4, y el resultado es el distinguished name del registro encontrado, junto con los atributos solicitados.

ldapsearch observa a /etc/openldap/ldap.conf en busca de una línea que comience con BASE a fin de determinar la base de la búsqueda, y en su defecto, se apoya en la configuración del servidor defaultsearchbase. La base de búsqueda es el punto en el árbol en donde las búsquedas comienzan. Sólo serán buscadas las entradas que sean "hijas" de la base de búsqueda (y de la base de búsqueda en sí). Utilice el parámetro -b para especificar una base de búsqueda diferente, tal como ldapsearch -x -b ou=groups,dc=ertw,dc=com para buscar el contenedor de los grupos del árbol ertw.com.

Alterar el modo en el que son devueltos los datos

LDAP puede almacenar los datos binarios, tales como las imágenes. El atributo jpegPhoto es la manera estándar de almacenar una imagen en el árbol. Si recupera el valor del atributo de la línea de comandos, se dará cuenta de que está codificada en base64. El parámetro -t es utilizado para guardar cualquiera de los atributos binarios en un archivo temporario. El Listado 6 muestra cómo usar este parámetro.

Listado 6. Guardar los atributos binarios en el sistema de archivos
$ ldapsearch  -LLL  -x 'cn=joe*' jpegphoto | head
dn: cn=Joe Blow,ou=people,dc=ertw,dc=com
jpegPhoto:: /9j/4AAQSkZJRgABAQEASABIAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQw
... output continues for 1300+ lines ...

$ ldapsearch  -LLL -t -x '(cn=joe*)' jpegphoto
dn: cn=Joe Blow,ou=people,dc=ertw,dc=com
jpegPhoto:< file:///tmp/ldapsearch-jpegPhoto-VaIjkE

$ file /tmp/ldapsearch-jpegPhoto-VaIjkE
/tmp/ldapsearch-jpegPhoto-VaIjkE: JPEG image data, JFIF standard 1.01, comment: \
  "Created with The GIMP\377"

El Listado 6 muestra dos búsquedas para cualquier persona cuyo nombre comience con "Joe," pero que únicamente recupere el atributo jpegPhoto. El primer intento no utiliza el parámetro -t, y por lo tanto el valor de jpegPhoto se muestra en la consola con el formato de base64. Su utilidad se limita a la línea de comandos, por lo tanto el segundo intento especifica -t en la línea de comandos. Esta vez el valor de jpegPhoto es un URI para un archivo (usted puede cambiar el directorio con la opción -T). Finalmente, el archivo devuelto es inspeccionado, y de hecho, es la versión binaria de la imagen que se puede ver.

Por omisión, ldapsearch imprime los resultados en el orden en el que fueron recibidos desde el servidor. Usted puede clasificar la salida con el parámetro -S pasándole el nombre del atributo que usted quiere clasificar. Para la clasificación de los atributos múltiples separe los atributos con una coma (,).


Herramientas de LDAP de la línea de comandos

Esta sección cubre el material para el tema 304.2 del examen 301 del Senior Level Linux Professional (LPIC-3). Este tema tiene un puntaje que equivale a 4.

En esta sección, aprenda cómo:

  • Utilizar las herramientas de ldap* para tener acceso y modificar el directorio
  • Utilizar las herramientas de slap* para tener acceso y modificar el directorio

Varias herramientas son proporcionadas con OpenLDAP para manejar el directorio y administrar el servidor. Usted ya está familiarizado con ldapsearch, que fue tratado en la sección anterior. Los comandos que comienzan con ldap son para los usuarios del árbol, los comandos que comienzan con slap son para los administradores.

Herramientas para el manejo del árbol

La finalidad de los comandos en esta sección es la de manejar el árbol, ya sea cambiando o leyendo los datos. ldapsearch también entra en esta categoría. Para utilizar estos comandos, usted necesita autenticar el servidor.

ldapadd y ldapmodify

Estos dos comandos son utilizados para agregar y cambiar las entradas en el árbol. Es posible que lo recuerde del primer tutorial, LPI exam 301 prep:
Conceptos, arquitectura y diseño
en la serie en la que LDAP Data Interchange Format (LDIF) puede ser utilizado para agregar, cambiar y eliminar los datos del árbol. El Listado 7 muestra un ejemplo de algún LDIF para agregar una entrada.

Listado 7. LDIF para agregarle una entrada al árbol
dn: cn=Sean Walberg,ou=people,dc=ertw,dc=com
objectclass: inetOrgPerson
cn: Sean Walberg
cn: Sean A. Walberg
sn: Walberg
homephone: 555-111-2222

El Listado 7 comienza con una descripción del distinguished name de la entrada. Esta entrada terminará bajo el contenedor ou=people,dc=ertw,dc=com, y posee un distinguished name relativo cn=Sean Walberg, que se obtiene al dividir el distinguished name(DN)después del primer par de atributos/valores. La entrada tiene un objectclass de inetOrgPerson, que es de un tipo bastante genérico para cualquier persona que pertenece a una organización. A continuación dos variantes del nombre común, luego el apellido, y finalmente, un número de teléfono de su casa.

En el Listado 7 está implícito que esto es un agregado al árbol, frente a un cambio o supresión. Recuerde que los archivos LDIF pueden especificar la contraseña changetype que le indica al lector qué hacer con los datos.

El comando ldapadd se utiliza para procesar este archivo LDIF. Si el Listado 7 estuviera guardado como "sean.ldif", entonces ldapadd -x -D cn=root,dc=ertw,dc=com -w mypass -f sean.ldif sería una manera de agregar una nueva entrada al árbol. La parte del comando -x -D cn=root,dc=ertw,dc=com -w mypass debería serle familiar del debate anterior sobre ldapsearch, como una manera de autenticar el árbol con una autenticación simple el todo poderoso DN de origen. Todos los comandos ldap en esta sección utilizan los mismos parámetros para autenticar el árbol, por lo que verán esta forma repetida.

ldapadd está implementado como un vínculo simbólico de ldapmodify, y cuando se lo llama ldapadd es interpretado como ldapmodify -a. El parámetro -a le indica a ldapmodify que asuma un valor por omisión changetype de add que se utiliza para agregar entradas al árbol. Cuando se lo invoca ldapmodify, se supone que el valor por omisión changetype es modificar la operación

ldapadd (y ldapmodify) es una forma eficiente de cargar los datos de gran volumen en el servidor sin necesidad de apagarlo. Los archivos LDIF pueden contener muchas operaciones y con frecuencia es más fácil generar un LDIF desde cualquier otra fuente de datos que usted esté intentando importar en lugar de escribir el código personalizado para analizar la fuente de datos y agregarla en forma directa a través de LDAP.

ldapdelete

ldapdelete, como su nombre lo indica, elimina una entrada del árbol. Todas las entradas se identifican únicamente en el árbol por sus DN; por lo tanto, ldapdelete borra las entradas por DN, y no por cualquier otra consulta.

Además de los parámetros de autenticación ya comentados, ldapdelete puede tomar su lista de DNs para poder eliminar desde la línea de comandos o desde un archivo. Para poder eliminar desde la línea de comandos, simplemente debe añadir los DNs a su línea de comandos, como ldapdelete -x -D cn=root,dc=ertw,dc=com -w mypass "cn=Sean Walberg,ou=people,dc=ertw,dc=com". Si usted tiene muchas entradas que eliminar puede ubicar los DNs, uno por línea, en un archivo e indicarle ldapdelete a ese archivo con -f filename.

Tenga en cuenta que usted puede eliminar las entradas a través de LDIF y de los comandos ldapadd/ldapmodify. El comando ldapdelete es más conveniente en muchos casos, pero no es la única manera de eliminar las entradas.

ldapmodrdn

El comando ldapmodrdn cambia el distinguished name relativo del objeto, eso significa el primer par de atributos/valores en el DN. Éste vuelve a nombrar efectivamente la entrada dentro de la rama actual del árbol. A diferencia del LDIF moddn changetype, este comando puede sólo volver a nombrar la entrada, y no puede moverla a otro lugar del árbol.

El uso de este comando es simple: sólo debe entregar las credenciales de autenticación, el DN de la entrada y el nuevo RDN. El Listado 8 muestra una cuenta cuyo nombre está siendo reemplazado de "Joe Blow" a "Joseph Blow".

Listado 8. Cambiar el nombre de una entrada
$ ldapmodrdn -x -D cn=root,dc=ertw,dc=com -w dirtysecret \
	'cn=Joe Blow,ou=people,dc=ertw,dc=com' 'cn=Joseph Blow'
$ ldapsearch -LLL -x '(cn=Joseph Blow)' 
dn: cn=Joseph Blow,ou=people,dc=ertw,dc=com
objectClass: inetOrgPerson
sn: Blow
cn: Joe Blow
cn: Joseph Blow

Tenga en cuenta que el anterior RDN aún aparece como un atributo, es decir, cn: Joe Blow. Si usted quiere que el anterior RDN sea eliminado, agréguele -r a la línea de comandos. Es lo mismo que agregarle deleteoldrdn: 1 a su código LDIF (el que, curiosamente, es la conducta por omisión para LDIF pero no para ldapmodrdn).

ldapcompare

ldapcompare le permite comparar un valor predeterminado con el valor almacenado en algún lugar del árbol LDAP. Un ejemplo nos mostrará cómo funciona esto.

Listado 9. Utilizar ldapcompare
$ ldapcompare -x "cn=Sean Walberg,ou=people,dc=ertw,dc=com" userPassword:mypassword
TRUE
$ ldapcompare -x "cn=Sean Walberg,ou=people,dc=ertw,dc=com" userPassword:badpassword
FALSE

En el Listado 9, el comando ldapcompare es ejcutado. Después de que los parámetros de autenticación son atendidos, los dos parámetros finales para controlar son el DN para verificar, y el atributo y el valor para cotejar. El DN en ambos ejemplos anteriores está en el listado de "cn=Sean Walberg". Los atributos que ha sido controlado en ambos casos es el atributo userPassword. Cuando se da la contraseña correcta, ldapcompare imprime la cadena TRUE y un código de error 6. Si el valor dado no coincide con lo que hay en la entrada, entonces se envía FALSE a la consola, y un código de error 5 es devuelto. La opción -z previene que cualquier cosa sea impresa; se espera que la persona que llame utilice el código de error para determinar si el control fue exitoso o no.

Aunque el ejemplo del Listado 9 comprobó una contraseña, cualquier atributo puede ser utilizado, incluyendo a objectClass. Si el atributo posee valores múltiples, como nombres comunes múltiples u objectClasses, entonces la comparación es exitosa si uno de ellos coincide.

ldapwhoami

ldapwhoami le permite probar la autenticación en el servidor LDAP y determinar qué DNs se autentican para cotejar con el servidor. Simplemente llame a ldapwhoami con los parámetros de autenticación normales, como se ve en el Listado 10.

Listado 10. Una demostración de ldapwhoami
$ ldapwhoami -x
anonymous
Result: Success (0)
$ ldapwhoami -x -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" -w mypassword
dn:cn=Sean Walberg,ou=people,dc=ertw,dc=com
Result: Success (0)
$ ldapwhoami -x -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" -w badpass
ldap_bind: Invalid credentials (49)

El primer ejemplo en el Listado 10 muestra un enlace sin nombre del usuario ni contraseña. Ldapwhoami devuelve la cadena anonymous para indicar un enlace anónimo, y también una línea de estado que indica que la autenticación fue exitosa. El segundo ejemplo se enlaza como con el DN de un usuario. Esta vez el DN devuelto es el mismo con el que fue autenticado. Finalmente, se realiza un intento de enlace con credenciales no válidas. El resultado es una explicación del problema.

Ldapwhoami es útil para solucionar los problemas relacionados con la configuración del servidor, y también para verificar en forma manual las contraseñas. Las listas de acceso podrían interponerse en el camino de ldapsearch, así que utilizar ldapwhoami en su lugar puede ayudarlo a determinar si el problema son las credenciales o las listas de acceso.

Herramientas de administración

Los comandos que comiencen con slap son para los administradores y operan en forma directa sobre los archivos de la base de datos en lugar de hacerlo a través del protocolo LDAP. Como tal, por lo general usted necesitará ser raíz para utilizar estos comandos, y en algunos casos, el servidor debe estar apagado.

slapacl

Slapacl es un utilitario que le permite al administrador probar las listas de acceso para cotejarlas con varias combinaciones de DN, entrada y atributos de enlace. Por ejemplo, se utiliza slapacl para probar ver qué tipo de acceso tiene un usuario determinado sobre los atributos de otro usuario. Este comando debe ser ejecutado como raíz porque está leyendo la base de datos y los archivos de configuración en forma directa en lugar de utilizar LDAP.

El uso de slapacl se describe mejor a través de un ejemplo. En el Listado 11, el administrador está probando para ver qué acceso tiene un usuario a su propia contraseña antes de implementar un ACL, y luego, nuevamente después de implementar un ACL que se supone debe limitar el acceso a algo más seguro.

Listado 11. Utilizar slapacl para determinar el efecto de un cambio de ACL
# slapacl -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" \
	-b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword
authcDN: "cn=sean walberg,ou=people,dc=ertw,dc=com"
userPassword: read(=rscxd)

... change slapd.conf ...

# slapacl -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" \
	-b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword
authcDN: "cn=sean walberg,ou=people,dc=ertw,dc=com"
userPassword: =wx

# slapacl -D "cn=Joseph Blow,ou=people,dc=ertw,dc=com" \
	-b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword
authcDN: "cn=joseph blow,ou=people,dc=ertw,dc=com"
userPassword: =0

Es obligatorio tener en cuenta las siguientes dos informaciones relacionadas con el comando slapacl. La primera es para el DN de enlace, que es el DN del usuario al que usted está probando para el acceso. La segunda información es para el DN de la entrada que usted está poniendo a prueba en su contra. El DN de enlace es especificado con -D y el DN objetivo está configurado con -b. Usted puede en forma opcional limitar la prueba a un único atributo incluyéndolo al final (como el ejemplo en el Listado 11) userPassword. Si usted no especifica un atributo, recibirá los resultados de cada atributo en la entrada.

En el primer comando del Listado 11, el administrador está probando la entrada cn=Sean Walberg par ver qué acceso tiene con respecto a su propia contraseña. El resultado es el acceso a la lectura. Recuerde que todo esto se encuentra en el tercer tutorial de esta serie, LPI exam 301 prep:
La configuración
que los usuarios deberían poder escribir y autenticar con respecto a sus atributos userPassword, pero no leer. Después de cambiar las ACLs, se realiza nuevamente la prueba y sólo los permisos de escritura y autenticación están disponibles. Por último, se realiza una prueba para ver qué acceso tiene Joseph Blow sobre la contraseña de Sean Walberg, el resultado es que no tiene acceso.

Slapacles una forma eficaz de probar los resultados de los cambios de ACL y depurar los problemas de ACL. Es particularmente eficaz porque lo lee en forma directa de base de datos y de slapd.conf, por lo que cualquier cambio realizado en slapd.conf se refleja en la salida de slapacl y no requiere un reinicio de slapd.

slapcat

Slapcat vuelca los contenidos del árbol LDAP como LDIF a la salida estándar, o a un archivo si utiliza -l filename. Usted puede, en forma opcional, utilizar la opción -s para proporcionar el DN de inicio, o -a para pasar un filtro de consultas.

Slapcat opera en forma directa en la base de datos, y puede ser ejecutada mientras el servidor está funcionando aún. Únicamente los tipos de la base de datos bdb son soportados.

slapadd

Slapadd es una herramienta de importación masiva que opera en forma directa en la base de datos de backend, lo que significa que slapd debe ser detenida para utilizar esta herramienta. Está diseñada para ser utilizada con la salida de slapcat. Slapadd no realiza una validación de los datos de entrada, por lo tanto es posible finalizar con las ramas del árbol que están separadas. Esto sucedería si algunos objetos del contenedor no fuesen importados.

La entrada slapadd es un archivo LDIF, como el generado por slapcat. La manpage(8C)slapadd sugiere utilizar ldapadd en su lugar, debido a la validación de los datos proporcionados por la variante en línea. La manpage también se da cuenta de que la salida de slapcat no garantiza que sea clasificada de un modo que sea compatible con ldapadd (los objetos del contenedor pueden venir después de los "hijos" en la salida, y por lo tanto fallaría la validación). Utilizar cualquier filtro en slapcat puede también hacer que los datos importantes falten. Por lo tanto, debe utilizar slapadd sólo con LDIF producido por slapcat, y utlizar ldapadd para cualquier otro LDIF.

Después de apagar su servidor LDAP, sólo puede ejecutar el comando slapadd y dirigir su salida LDAP a la entrada estándar. Si usted quisiera leer de un archivo, utilice la opción -l. Al igual que con slapcat, únicamente los tipos de base de datos bdb son soportados.

slappasswd

Slappasswd se utiliza para generar contraseñas de hash que se almacenan en el directorio, o en slapd.conf. Un uso muy común es utilizar una contraseña de hash para la cuenta rootdn's en slapd.conf de tal modo que cualquier persona que esté mirando el archivo de configuración no pueda determinar la contraseña. Slappasswd le pedirá una contraseña de hash si usted no proporciona ningún parámetro, como se puede ver en el Listado 12.

Listado 12. Utilizar slappasswd para realizar una función de hash en una contraseña
$ slappasswd
New password: 
Re-enter new password: 
{SSHA}G8Ly2+t/HMHJ3OWWE7LN+GRmZJAweXoE

A continuación puede copiar la cadena completa a la línea rootpw en slapd.conf. Slapd reconoce el formato de la contraseña y comprende que {SSHA} significa que lo que se encuentra a continuación es un hash de SHA1. Cualquier persona que lea slapd.conf no aprenderá la contraseña de origen.

Los hashes generados porslappasswd pueden también ser utilizados en los archivos LDIF usados con ldapadd y ldapmodify, que le permitirán almacenar hashes unidireccionales seguros de su contraseña en lugar de un texto menos seguro o una versión codificada en base64.

slapindex

Usted podrá recordar slapindex se encuentra en el tercer tutorial de esta serie, LPI exam 301 prep:
Configuración
. Después de crear o cambiar un índice con la contraseña index en slapd.conf, usted debe reconstruir sus índices, o slapd devolverá resultados incorrectos. Para reconstruir los índices, detenga slapd y ejecute slapindex. Este proceso puede llevar un tiempo que depende de la cantidad de entradas que se encuentren en la base de datos, o como lo indica el manpage, "Este comando le brinda una gran oportunidad al usuario de obtener y beber su bebida favorita".

slaptest

Slapdtest simplemente comprueba si su archivo slapd.conf es correcto. Esto es útil porque si usted tuviera que reiniciar slapd con un archivo de mala configuracíón, fallaría en el arranque hasta reparar el archivo. Slaptest le permite realizar una verificación básica de su archivo de configuración antes de reiniciar.

Utilizar slaptest es tan simple como escribir slaptest. Si slapd.conf es correcta, la prueba del archivo de configuración será exitosa. De lo contrario, recibirá un error que explicará el problema.

Slaptest también verifica la existencia de varios archivos y directorios que son necesarios para la operación. Sin embargo, durante la prueba, el autor pudo encontrar algunos errores en la configuración de los archivos que pasaron slaptest, pero que aún podrían hacer que slapd fallara.


Whitepages

Esta sección cubre el material para el tema 304.3 del examen 301 de Senior Level Linux Professional (LPIC-3). Este tema tiene un valor de 1.

En esta sección, aprenda cómo:

  • Planificar los servicios de las whitepages
  • Configurar los servicios de las whitepages
  • Configurar los clientes para recuperar los servicios de las whitepages

Un servicio de las whitepages les permite a los clientes de e-mail recuperar el contacto con la información de una base de datos de LDAP. Al permanecer con los nombres de atributos comunes, tales como los proporcionados por inetOrgPerson objectClass, usted podrá conseguir una mejor compatibilidad con los clientes de e-mail. Por ejemplo, tanto Microsoft Outlook como Evolution utilizan el atributo mail para almacenar la dirección de e-mail del usuario, y los atributos givenName, displayName, cn, y sn, para almacenar las diversas formas del nombre.

Configurar los clientes de e-mail para un directorio de LDAP

En teoría, cualquier cliente que le da soporte a LDAP puede utilizar su árbol. Usted necesitará la siguiente información configurada en el cliente:

  • La dirección o el nombre del host del servidor LDAP
  • Las credenciales para el enlace, a menos que lo esté haciendo en forma anónima
  • El DN base para realizar la búsqueda
  • Un filtro de búsqueda, tal como (mail=*), para eliminar las cuentas sin una dirección de e-mail (opcional)

Una vez que haya ingresado la información anterior en su cliente de e-mail debería poder buscar los contactos.

Configurar Microsoft Outlook para un directorio de LDAP

Para configurar Microsoft Outlook (probado con el Outlook 2003), seleccione Tools > Email Accounts. Usted verá un diálogo similar al de la Figura 2.

Figura 2. Seleccionar el tipo de cuenta que desea agregar
Seleccionar el tipo de cuenta que desea agregar

Seleccionar la opción que desea agregar a un nuevo directorio, y haga clic en Next. Verá el diálogo en la Figura 3.

Figura 3. Seleccionar el tipo de directorio que desea agregar
Seleccionar el tipo de directorio que desea agregar

Seleccione la opción para agregar un nuevo directorio de LDAP y haga clic en Next. Verá el diálogo en la Figura 4.

Figura 4. Especificar los detalles del servidor LDAP
Especificar los detalles del servidor LDAP

Ingrese los detalles más relevantes acerca de su servidor LDAP en el diálogo que se muestra en la Figura 4. El ejemplo mostrado utiliza las credenciales de los usuarios para su enlace con el árbol. Usted puede utilizar el acceso anónimo si la configuración de su servidor lo soporta.

Después de ingresar en los detalles básicos, haga clic en More Settings, se le pedirá más información, como se puede ver en la Figura 5.

Figura 5. Agregar opciones de avanzada a la configuración del servidor LDAP.
Agregar opciones de avanzada a la configuración del servidor LDAP.

La Figura 5 muestra más opciones, la más importante es la base de búsqueda. Haga clic en OK después de ingresar a la base de búsqueda, usted volverá a la pantalla principal del Outlook.

Ahora puede utilizar la base de datos de LDAP donde se le pide que busque a los usuarios mediante la selección del nombre del servidor desde el campo "Show Names From".


Resumen

En este tutorial usted aprendió cómo utilizar su directorio a través de las herramientas de búsqueda y de la línea de comandos. También aprendió cómo configurar a los clientes de e-mail para utilizar el directorio a fin de almacenar la información de los contactos.

Buscar el árbol LDAP requiere que usted cree un filtro de consulta. Los diferentes operadores que son usados en una consulta se detallan en la Tabla 3.

Tabla 3. Operadores de Búsqueda de LDAP
OperadorDescripciónEjemplo
=Pruebas de igualdad(cn=Walberg)
*Pruebas para la existencia de un atributo(cn=*)
Búsqueda de las subcadenas(sn=Walb*)
&AND Lógico(&(condition1)(condition2))
|OR lógico(|(condition1)(condition2))
!NOT lógico(!(mail=*))
~=Coincidencia "Sounds-like"(cn~=Shawn)
<= and >=Coincidencia de rango(pagesPerMinute >= 20)

Varios utilitarios son proporcionados para utilizar el directorio, tales como ldapsearch para la búsqueda, y ldapadd y ldapmodify para agregar y cambiar los datos. Las herramientas que comienzan con ldap operan a través del protocolo LDAP y requieren credenciales para conectarse con el servidor. Las herramientas que comienzan con slap son utilizadas por el administrador y operan en forma directa sobre la base de datos.

Este tutorial y los anteriores de la serie 301 se han centrado en la administración y en el trabajo con un servidor de LDAP. El siguiente tutorial de esta serie se referirá a varias aplicaciones incluyendo los servidores de e-mails, y le mostrará cómo utilizar LDAP como la fuente de datos.

Recursos

Aprender

Obtener los productos y tecnologías

  • El utilitario Firewall Builder facilita la tarea de escribir en la reglas iptables, tiene una buena GUI y un conjunto de herramientas para extender a las actualizaciones de sus firewalls.
  • OpenLDAP es una gran opción si está buscando un servidor de LDAP.
  • phpLDAPadmin es una herramienta de administración de LDAP basada en la Web. Si una GUI tiene más que ver con su estilo, Luma es una buena opción para tener en cuenta.
  • Con el IBM trial software, disponible para descargarlo en forma directa de developerWorks cree su próximo proyecto de desarrollo en Linux.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=651076
ArticleTitle=Preparación para el examen 301 del LPI, Tema 304: Uso
publish-date=07152011