Directorios home centralizados

En un dominio Linux puro, es habitual centralizar los directorios de conexión (home) de los usuarios en uno de los sistemas del dominio, y compartirlo al resto de sistemas mediante el sistema de archivos en red NFS (ver Capítulo 3, Sistema de archivos en red (NFS)). De esta forma, los ficheros de cada usuario se mantienen centralizados y el usuario trabaja siempre con los mismos datos, independientemente del ordenador en que esté trabajando.

En el caso de un domino heterogéneo de sistemas Linux y Windows, existen numerosas alternativas para conseguir que los usuarios tengan disponibles sus datos de forma centralizada: exportar los directorios personales a través de SMB o de NFS, y en ambos casos, exportarlos desde un sistema Windows o Linux. En esta sección vamos a comentar estas alternativas (aunque algunas con mayor nivel de detalle que otras, por ser su configuración menos automática).

La primera alternativa sería que los directorios home residieran físicamente en un sistema Linux, que puede ser cliente de autentificación del dominio Windows, tal como se ha contado en este capítulo. En este caso, es necesario crear manualmente los directorios y asignarles los atributos de protección adecuados (propietario, grupo y permisos). Si lo hacemos así, la configuración más fácil es exportar dichos directorios mediante NFS para los demás sistemas Linux, y mediante Samba para que se conviertan en recursos directamente accesibles desde sistemas Windows. En ambos casos (NFS para Linux y SMB para Windows) las configuraciones pueden automatizarse completamente (en el caso de Windows, mediante scripts de inicio de sesión) para que no necesiten ninguna intervención del usuario. Ambas configuraciones han sido comentadas en los capítulos Capítulo 1, Administración de dominios Windows 2003 y Capítulo 2, Administración de dominios en Linux, respectivamente.

La segunda alternativa sería que los directorios home residieran físicamente en un sistema Windows miembro del dominio (que puede ser alguno de los DCs, o bien cualquier otro miembro). En este caso, obviamente los directorios se exportarían como recursos SMB para el resto de sistemas Windows del dominio, que podrían acceder al mismo mediante una conexión a la unidad de red correspondiente. Respecto a los sistemas Linux que deben ser clientes de estos recursos, puede optarse por hacerlo mediante NFS o mediante el propio protocolo SMB. En el primer caso, es necesario utilizar una suite existente en Windows Server denominada "Windows Services for UNIX", que incluye entre otros servicios un servidor de NFS. En el segundo caso, es necesario que los clientes Linux sean configurados para admitir como directorios de trabajo de los usuarios los correspondientes recursos de red exportados directamente por SMB. El resto de la sección trata de explicar cómo puede hacerse esta configuración.

Lo primero que hay que configurar es el propio recuro compartido SMB, que puede exportar cualquier sistema Windows del dominio o cualquier sistema Linux con Samba correctamente configurado. Lo más sencillo resulta exportar un directorio o carpeta por cada usuario como un recurso de red que debe denominarse como el propio usuario. Si decidimos utilizar para ello un sistema Linux con Samba, sólo debemos activar el recurso denominado homes. Si lo realizamos desde un sistema Windows, debemos crear y compartir una carpeta personal por usuario (esta acción puede automatizarse mediante el uso de la pestaña Perfil del usuario en la herramienta Usuarios y Equipos de Active Directory). Si lo hacemos así, la conexión de dicho recurso como unidad de red del usuario en cualquier sistema Windows del dominio ya está resuelto.

En el caso de los clientes Linux, puesto que el directorio personal de cada usuario va a residir en un recurso SMB, necesitamos montar dicho recurso mediante el sistema de archivos smbfs (ver “El sistema de ficheros SMB para Linux”). En principio, el montaje debería hacerse en la ruta de su directorio home según los datos de su cuenta de usuario (esta ruta es, habitualmente, /home/nombre_de_usuario). Sin embargo, en el caso de un montaje de tipo SMB, esta opción plantea algunos inconvenientes relacionados con los ficheros/directorios de configuración del entorno gráfico que se guardan en el directorio de conexión de cada usuario. Por tanto, se ha optado por una alternativa un poco distinta: crear el home del usuario como un directorio local en cada sistema Linux y montar automáticamente su unidad de red personal Windows en un subdirectorio particular (denominado, por ejemplo, /home/nombre_de_usuario/Personal).

Entre otros motivos, hemos elegido esta alternativa porque puede automatizarse completamente, sin requerir por parte del administrador la creación de los directorios de conexión locales en cada sistemas Linux ni el montaje de los recursos SMB de forma manual. Para ello pueden utilizarse dos extensiones de la biblioteca PAM, que se explican a continuación:

  1. pam_mkhomedir. Mediante esta extensión (que no es necesario instalar, sino sólo activar), si el directorio de conexión de un usuario no existe en el sistema, éste se crea automáticamente cuando el usuario inicia sesión por primera vez.

    La configuración de esta biblioteca es muy sencilla. Basta añadir la siguiente línea en la sección session del fichero /etc/pam.d/system-auth:

    session  required  /lib/security/$ISA/pam_mkhomedir.so  \
    skel=/etc/skel/ umask=0022
    
  2. pam_mount. Esta extensión viene como un paquete instalable (en formato RPM) con el mismo nombre. Una vez instalado, la configuración se lleva a cabo en dos ficheros: uno para establecer los parámetros del montaje (servidor, recurso, directorio local, etc.), y otro para instruir a PAM sobre cuándo realizar el montaje (cuándo ejecutar pam_mount). A continuación se explican los cambios concretos en ambos ficheros:

    En primer lugar, en el fichero /etc/security/pam_mount.conf basta añadir una línea al final, tomando como plantilla una existente que especifica cómo realizar montajes de recursos exportados por sistemas Windows Server 2003 pertenecientes a un dominio. Suponiendo que el dominio Windows se denomina ADMON y que el ordendor SERVIDOR exporta la carpeta personal de cada usuario como un recurso con el nombre de ese usuario, la línea quedaría así:

    volume * smb SERVIDOR & /home/&/Personal uid=&,gid=&,dmask=0750, \
    workgroup=ADMON - -
    

    Y en segundo lugar, el fichero /etc/pam.d/system-auth necesita incluir dos líneas, una de tipo auth y otra de tipo session incluyendo las llamadas al módulo pam_mount. La ubicación de ambas líneas entre las de su tipo es significativa para el correcto funcionamiento del módulo. Con todas las modificaciones realizadas, la configuración final del fichero system-auth sería:

    #%PAM-1.0
    
    auth        required      /lib/security/$ISA/pam_env.so
    auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
    auth        required      /lib/security/$ISA/pam_mount.so
    auth        sufficient    /lib/security/$ISA/pam_ldap.so use_first_pass
    auth        required      /lib/security/$ISA/pam_deny.so
    
    account     required      /lib/security/$ISA/pam_unix.so
    account     [default=bad success=ok user_unknown=ignore \
    service_err=ignore system_err=ignore] /lib/security/$ISA/pam_ldap.so
    
    password    required      /lib/security/$ISA/pam_cracklib.so retry=3 \
    type=
    password    sufficient    /lib/security/$ISA/pam_unix.so nullok \
    use_authtok md5 shadow
    password    sufficient    /lib/security/$ISA/pam_ldap.so use_authtok
    password    required      /lib/security/$ISA/pam_deny.so
    
    session     required      /lib/security/$ISA/pam_limits.so
    session     required      /lib/security/$ISA/pam_unix.so
    session     required      /lib/security/$ISA/pam_mkhomedir.so \
    skel=/etc/skel/ umask=0022
    session     optional      /lib/security/$ISA/pam_mount.so
    session     optional      /lib/security/$ISA/pam_ldap.so
    

De esta forma, la primera vez que un usuario se conecta al sistema Linux, primero se crea su directorio de conexión y posteriormente se monta en un subdirectorio denominado Personal el recurso SMB que contiene su carpeta Windows de uso personal. Cuando el usuario se desconecta del sistema, el directorio permanece, aunque el recurso se desmonta auotmáticamente.

Por último, debemos tener en cuenta que el uso de estas extensiones de PAM (en especial, pam_mkhomedir) tiene algunos efectos secundarios que debemos considerar: