Servicio de directorio OpenLDAP | MundoPC.NET
Página principal
    | Apúntate a MundoPC.NET | Añadir a Favoritos Versión Imprimible

3 Feb 2008 - 02:00 pm


Creación de grupos y cuentas de usuario

Para crear nodos nuevos en el árbol lo haremos nuevamente con la utilidad ldapadd. Por ejemplo queremos crear los grupos de tipo POSIX o Unix: redaccion y sistemas, volveríamos a crear un fichero de texto, esta vez como el del Listado 8 y ejecutaremos ldapadd -x -D ‘cn=admin,dc=linuxplus,dc=com’ -W -f grupos.ldif.

Listado 8. Fichero para crear los grupos dentro de OpenLDAP
dn: cn=redaccion,ou=Group, dc=linuxplus,dc=com
cn: redaccion
objectclass: posixGroup
objectclass: top
gidNumber: 516
dn: cn=sistemas,ou=Group, dc=linuxplus,dc=com
cn: sistemas
objectClass: posixGroup
objectClass: top
gidNumber: 517

Lo mismo vamos a hacer para crear las cuentas de usuario, pero en lugar de utilizar el objectClass posixGroup utilizaremos el posixAccount que nos permite usar los atributos referentes a las cuentas de usuario Unix. Aparte vamos a incluir las clases person, inetOrgPerson y organizationalPerson que nos van a proporcionar atributos como sn, cn o mail, además, y para ver la doble utilidad del directorio, también vamos a poner los campos de número de teléfono fijo y móvil. También vamos crear un segundo nivel dentro de People para tener separadas las cuentas por departamentos, para eso crearemos dos unidades organizativas nuevas dentro de People llamadas sistemas y redacción (no confundir con los grupos de usuarios creados anteriormente). Como podemos observar en el Listado 10, definimos un fichero que nos servirá para crear las cuentas de usuario, en nuestro caso son cuentas de tipo Posix (para autenticar clientes GNU/Linux o Unix).

Listado 9. Creación de los diferentes departamentos
dn: ou=sistemas,ou=People,dc=linuxplus,dc=com
ou: sistemas
objectClass: top
objectClass: organizationalUnit
dn: ou=redaccion,ou=People,dc=linuxplus,dc=com
ou: redaccion
objectClass: top
objectClass: organizationalUnit

Listado 10. Creación de las cuentas de usuarios
dn: uid=pedro, ou=sistemas, ou=People, dc=linuxplus, dc=com
uid: pedro
gidNumber: 517
uidNumber: 517
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Serra
cn: Pedro Serra
gecos: Pedro Serra
mail: pedro@linuxplus.com
homeDirectory: /home/pedro
loginShell: /bin/bash
telephoneNumber: 55554999
mobile: 644390000
dn: uid=carmen, ou=redaccion, ou=People, dc=linuxplus, dc=com
uid: carmen
gidNumber: 516
uidNumber: 600
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Siquier
cn: Carmen Siquier
gecos: Carmen Siquier
mail: carmen@linuxplus.com
homeDirectory: /home/carmen
loginShell: /bin/bash
telephoneNumber: 55554998
mobile: 644320000
dn: uid=laura, ou=redaccion, ou=People, dc=linuxplus, dc=com
uid: laura
gidNumber: 516
uidNumber: 601
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Segura
cn: Laura Segura
gecos: Laura Segura
mail: laurao@linuxplus.com
homeDirectory: /home/laura
loginShell: /bin/bash
telephoneNumber: 55554997
mobile: 644300000

Esto es gracias a que definimos los registros como posixAccount y shadowAccount, estos dos tipos de objetos nos proveen de diferentes campos útiles en las cuentas Posix como por ejemplo uid, uidNumber, gidNumber, homeDirectory, loginShell atributos que suelen estar en el fichero /etc/passwd de un equipo con GNU/Linux o Unix. Con estos atributos podemos configurar los parámetros básicos de una cuenta Unix.
Vamos a proceder de la misma manera que con los grupos, utilizaremos la utilidad ldapadd, podemos o bien crear un fichero (Listados 9 y10) único que contenga la creación de las dos unidades organizativas y los usuarios, o bien separarlos en dos (a gusto del usuario), luego ejecutaremos la utilidad ldapadd con los mismos parámetros que hemos utilizado anteriormente pero con el nombre del fichero LDIF que hayamos usado. Una vez creados los usuarios, y si no hay errores, nos va a indicar los registros creados, si los hay se parará donde los haya y no va a leer el contenido restante del fichero LDIF. Si se vuelve a ejecutar el ldapadd con el mismo fichero que anteriormente ya habíamos ejecutado probablemente no nos deje volver a crear los registros ya creados y se parará avisándonos de la siguiente forma:

adding new entry “ou=sistemas,ou=People,dc=linuxplus,dc=com”
ldap_add: Already exists (68)

Por lo tanto si se tiene que hacer esta operación se comentarán (con #) las líneas referentes a la definición de los registros que nos dice y volveremos a probarlo, de lo contrario si todo va correcto solamente veremos los registro creados, o bien podemos borrar el registro que nos dice que ya existe, teniendo en cuenta que no tiene que tener elementos colgando de él, de lo contrario se borrarían las entradas existentes dentro del nodo. Para realizar un borrado de un registro, utilizamos el comando ldapdelete de la misma manera que funciona la utilidad ldapadd: ldapdelete -x -D ‘cn=admin,dc=linnuxplus,dc=com’ -W ‘ou=sistemas, ou=People, dc=linuxplus,dc=com’ esto nos borrará la unidad organizativa sistemas. Si todo el proceso de creación indicado en el fichero LDIF es correcto nos lo va a indicar de la siguiente manera: (Listado 11).

Listado 11. Proceso de creación indicado en el fichero LDIF
adding new entry “ou=sistemas,ou=People,dc=linuxplus,dc=com”
adding new entry “ou=redaccion,ou=People,dc=linuxplus,dc=com”
adding new entry “uid=carmen, ou=redaccion, ou=People, dc=linuxplus, dc=com”
adding new entry “uid=laura, ou=redaccion, ou=People, dc=linuxplus, dc=com”

Una vez creadas las cuentas de usuario seguramente querremos asignar las contraseñas, para ello podemos utilizar la utilidad ldappasswd
de la siguiente manera: ldappasswd -x -D ‘cn=admin,dc=linuxplus,dc=com’ -W ‘uid=carmen,ou=redaccion,ou=People,dc=linuxplus,dc=com’ -S. Nos va a pedir la contraseña que queremos para el usuario carmen y luego la contraseña del administrador del LDAP (admin). El usuario lo especificamos a traves del dn, en nuestro caso: uid=carmen,ou=redaccion,ou=People,dc=linuxplus,dc=com.

Realización de búsquedas

Para finalizar con esta sección, vamos a comentar un poco sobre cómo realizar búsquedas de elementos dentro del directorio con la utilidad ldapsearch a través de la consola. Básicamente ésta se utiliza para realizar búsquedas utilizando una serie de filtros de búsqueda que veremos como funcionan. Al principio hemos comentado el tema de los accesos al LDAP a través del fichero de configuración, y comentamos que las lecturas no están restringidas y que no necesitamos un nombre de usuario ni contraseña para hacerlas.
Una de las consultas más sencillas es la de mostrar todo el contenido del directorio con ldapsearch -x -b dc=linuxplus,dc=com objectclass=*, ésto nos imprimirá toda la estructura del directorio en formato LDIF pero si hay atributos que no pueda leer todo el mundo no nos los va a mostrar. Si analizamos esta línea podemos ver en primer lugar el parámetro -x significa que vamos a usar la autentificación simple, el parámetro -b es la base o ruta del inicio de búsqueda (a partir de dónde queremos buscar), la raíz en nuestro caso, y seguidamente el filtro con las condiciones de búsqueda que en nuestro caso queremos ver todos los nodos que sean de cualquier tipo o sea, todos.
Las condiciones de búsqueda pueden ser más sofisticadas, como por ejemplo especificar que nos liste todos los registros de tipo posixAccount
(objectClass=posixAccount), todas las cuentas Unix o ver un contacto que tenga el campo uid=tomeu: ldapsearch -x -b dc=linuxplus,dc=com ‘(uid=tomeu)(&(obj ectClass=person))’ aquí podemos ver el uso de operaciones lógicas como la AND (&) y donde podemos ver de manera más extensa la sintaxis de búsqueda, los atributos van entre paréntesis y las operaciones se especifican como (operador (atributo = valor) ), los operadores pueden ser AND (&), OR (|) o NOT (!). También se puede usar comodines como el * que representaría todas las cadenas de 0 o más caracteres. Por ejemplo:

ldapsearch -x -b dc=linuxplus,dc=com ‘(mail=*linuxplus*)’

que nos listaría todos los registros con campos que contengan la cadena linuxplus. Después de la condición de búsqueda podríamos poner los campos que deseamos ver, separados por espacios en blanco.

Configuración de los clientes

A continuación os presentamos cómo configurar los clientes de varios sistemas operativos.

Clientes GNU/Linux
Lo primero que podemos hacer es que el sistema donde reside el servicio OpenLDAP lo utilice para leer los grupos, usuarios y contraseñas. Esto lo vamos hacer instalando el paquete nss_ldap en nuestro caso el paquete libnss-ldap para Debian, en la instalación nos va a pedir la dirección del servidor LDAP (ldap://127.0.0.1/ en nuestro caso), la raíz de nuestro directorio (dc=linuxplus,dc=com), la versión que utilizamos (versión 3), no necesitamos usuario para acceder a la base de datos, damos privilegios especiales de LDAP para el usuario root, cuenta de administración de la base de datos LDAP (cn=admin, dc=linuxplus, dc=com) y su contraseña.

Listado 12. Cambios en el fichero /etc/nsswitch.conf

passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files ldap dns

Una vez configurado cambiaremos los parámetros especificados en el Listado 12 del fichero /etc/nsswitch.conf. Es muy importante recordar que a partir de esta operación el sistema va a leer (aparte de los usuarios del propio sistema /etc/passwd y /etc/shadow) los existentes dentro del directorio OpenLDAP, para verificar que la configuración del paquete libnss-ldap funciona de manera correcta lo haremos con el comando getent, que nos permite listar la base de datos de usuarios que está utilizando el sistema, con getent passwd nos tocan salir los usuarios propios del sistema más los que existan dentro del OpenLDAP.

El servicio nsswitch se encarga de la configuración de las Bases de Datos del Sistema y del sistema de Conmutación de los Servicios de Nombres (Name Service Switch). Esto permitirá, por ejemplo, decirle a un sistema que aparte de utilizar su base de datos local de usuarios también utilice otra como LDAP. Se especifica para cada servicio dónde tiene que ir a consultar sus datos. Por ejemplo passwd es el que se encarga de las cuentas de usuario, seguidamente vienen las fuentes de datos: compat o bien files (fichero local /etc/passwd) y ldap (busca a la base de datos LDAP configurada en /etc/libnss-ldap.conf). Incluso se pueden establecer condiciones especiales si no encuentra un usuario en una base de datos que no siga buscando a la otra, por ejemplo:

passwd:ldap [NOTFOUND=return] files

Nos buscará la información (nombre de usuario) solicitada en la base de datos LDAP pero si no la encuentra ya no buscará en los ficheros locales (files), o también podríamos utilizar el estado UNAVAIL que determina si el servicio está o no disponible. Si el usuario quiere profundizar más en cómo se realizan este tipo de configuraciones siempre podría recurrir al manual: man nsswitch.conf.
Esta operación se repetirá en los diferentes clientes GNU/Linux que queramos que utilicen el directorio OpenLDAP para autenticarse, con la diferencia que en los clientes se tendrá que instalar aparte el paquete ldap-client. Aparte también podemos hacer que el sistema PAM (Pluggable Authentication Modules for Linux) que se suele utilizar para unificar el sistema de autorización de diferentes daemons (o servicios) de manera que simplemente configurando el PAM para que utilice OpenLDAP tendremos configurados de manera indirecta el sistema de autenticar usuarios en los diferentes servicios (por ejemplo: imap, samba, pop3). El paquete necesario para configurar el soporte de OpenLDAP en PAM es libpam-ldap y se configura de manera análoga al paquete anterior, la diferencia es que se tendría que especificar por cada módulo de PAM si se quiere usar LDAP o no.

Clientes Mac OSX
Aparte de clientes con GNU/Linux algunas veces necesitaremos que otros sistemas operativos puedan utilizar el OpenLDAP tanto para la autentificación como para usar los contactos del OpenLDAP. Con Mac OSX, a diferencia de otros sistemas propietarios como MS-Windows que no permiten el uso directo de OpenLDAP si no es con su propia implementación como el Active Directory, este permite configurar servicios de directorios que no sean propietarios de Apple. Para realizar este ejemplo hemos utilizado la última versión (10.5 Leopard) aunque también funciona para versiones anteriores. Vamos a ir a: Aplicaciones -> Utilidades -> Utilidad de Directorios para configurar la conexión con nuestro servidor OpenLDAP (Figura 5).

FIGURA 5. Utilidad de Directorios

FIGURA 5. Utilidad de Directorios

Una vez abierta la utilidad, iremos a Servicios y pulsamos el botón de Nuevo … (Figura 6), inmediatamente nos va a pedir el nombre o IP de nuestro servidor OpenLDAP, a continuación le damos a Continuar y esperamos a que detecte el servidor, automáticamente nos tiene que coger la base DN (dc=linuxplus, dc=com) y el tipo de estructura de datos (RFC 2307) como podemos ver en la Figura 7, nuevamente pulsamos Continuar y va a acabar configurando el cliente Mac OSX para que utilice el OpenLDAP.

FIGURA 6. Añadimos nuestro servidor

FIGURA 6. Añadimos nuestro servidor

FIGURA 7. Detección de nuestro servidor

FIGURA 7. Detección de nuestro servidor

Para finalizar podríamos ir a la utilidad de Directorio que permite visualizar y realizar búsquedas dentro de él. Esta utilidad se encuentra en el mismo sitio donde está la Utilidad de Directorios (Aplicaciones -> Utilidades -> Directorio), simplemente la arrancamos y nos tiene que listar, al menos, los usuarios y grupos creados.

¿Te ha gustado este artículo? ¡Compártelo!

  • Meneame
  • Bitacoras.com
  • Twitter
  • Facebook
  • Digg
  • MySpace
  • Technorati
  • Reddit
  • del.icio.us
  • Mixx
  • Google Bookmarks
  • Blogplay

Entradas relacionadas:

  1. Samba – Servidor para redes Microsoft


Actualizado el 30 Octubre 2008 - 16:25

- Publicado por Fernando Fdez. -


Dejar respuesta

*
Para probar que eres una persona y no un script, por favor haz la suma siguente y escribe el resultado. También puedes hacer click en la imagen para oir los números (solo en inglés).
Haz click para oir los números


| Publicidad | Quienes Somos | Aviso Legal | Contactar | GM3 Contables | Translate |
  
Warning: fopen() [function.fopen]: Filename cannot be empty in /hermes/web06/b1186/pow.mundopc/htdocs/src/online.inc on line 7
32 visitantes online
© MundoPC.NET C.B. 2000 - 2010