Una vez configurado el servidor de LDAP para almacenar la información del directorio, y los clientes de LDAP para poder preguntar por ella, el siguiente y último paso para organizar un dominio Linux con LDAP es conseguir que el directorio sea utilizado por todos los ordenadores (servidores y clientes) como fuente de información administrativa, añadida a los propios ficheros de configuración locales presentes en cada ordenador.
En principio, la información administrativa que tiene sentido
centralizar en un dominio Linux se reduce prácticamente a cuentas de
usuario (incluyendo contraseñas) y cuentas de grupo (las cuentas de
ordenadores del directorio, es decir, la centralización del fichero
/etc/hosts
del servidor LDAP, pueden obviarse si
ya disponemos de resolución de nombres basada en DNS, por
ejemplo). En conjunto, la información almacenada en ambos tipos de
cuentas permite autentificar a un usuario cuando éste desea iniciar
una sesión interactiva en un sistema Linux y, en el caso de que la
autentificación sea positiva, crear el contexto de trabajo inicial
(es decir, el proceso shell inicial) para ese
usuario. Manteniendo ambos tipos de cuentas en el directorio
permitiría una gestión completamente centralizada de los usuarios
del dominio.
Internamente, este proceso de autentificación y creación del contexto inicial que Linux lleva a cabo cuando un usuario desea iniciar una sesión interactiva utiliza dos bibliotecas distintas:
PAM (Pluggable Authentication Module) es una biblioteca de autentificación genérica que cualquier aplicación puede utilizar para validar usuarios, utilizando por debajo múltiples esquemas de autentificación alternativos (ficheros locales, Kerberos, LDAP, etc.). Esta biblioteca es utilizada por el proceso de "login" para averiguar si las credenciales tecleadas por el usuario (nombre y contraseña) son correctas.
NSS (Name Service Switch) presenta una interfaz genérica para averiguar los parámetros de una cuenta (como su UID, GID, shell inicial, directorio de conexión, etc.), y es utilizada por el proceso de "login" para crear el proceso de atención inicial del usuario.
La ventaja fundamental de ambas bibliotecas consiste en que pueden
reconfigurarse dinámicamente mediante ficheros, sin necesidad de
recompilar las aplicaciones que las utilizan. Por tanto, lo único
que necesitamos es reconfigurar ambas para que utilicen el servidor
LDAP además de los ficheros locales
(/etc/passwd
, etc.) de cada ordenador.
En RedHat/Fedora Linux, esta configuración es muy sencilla. Primero
instalamos (si no lo está ya) un paquete denominado
nss_ldap
, que contiene los módulos de LDAP para
PAM y NSS. A partir de ahí, ejecutamos la herramienta de
configuración authconfig, que configura
automáticamente los ficheros de PAM y NSS con los mecanismos de
autentificación disponibles. En nuestro caso, basta con indicar, en
dos ventanas sucesivas, que nuestro método de obtención de
informacion y de autentificación está basado en LDAP, indicando la
dirección IP del servidor y el sufijo del directorio (en formato
LDAP, claro). En principio, no debemos activar la casilla de
"Utilizar TLS" (que activaría conexiones seguras) ya que no hemos
activado este tipo de conexiones en el servidor.
Es importante recordar que debemos realizar esta configuración en todos los clientes primero, y sólo iniciarla en el servidor cuando hayamos asegurado que todo funciona correctamente. En cualquier caso, no resulta imprescindible configurar el servidor como cliente, si siempre incluimos los usuarios y grupos nuevos tanto en el directorio como en los ficheros locales del mismo (o bien si dichos usuarios nunca van a trabajar en el servidor).
La comprobación desde cualquier cliente que el dominio funciona es muy sencilla. Simplemente ejecutamos:
bash# getent passwd bash# getent group
Y comprobamos que nos devuelven, respectivamente, la lista completa de usuarios y grupos del servidor. En realidad, esta forma comprobaría únicamente el funcionamiento correcto de NSS sobre LDAP. Para una comprobación completa (PAM+NSS), la manera más efectiva es intentar iniciar una sesión en un cliente con un usuario que sólo esté definido en el servidor. Hay que recordar que el directorio de conexión del usuario (home)debe existir en el ordenador cliente (localmente, o bien montado por NFS).