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:
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
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:
Si pensamos permitir el acceso al sistema Linux de forma remota
mediante ssh, tenemos que modificar
ligeramente la configuración del demonio
sshd, debido a una inconsistencia entre la
implementación de este servicio y
pam_mkhomedir. Para resolverlo, debemos
descomentar una línea del fichero
/etc/ssh/sshd_config
(se encuentra casi al
final) y configurarla como sigue:
UsePrivilegeSeparation no
Debido a otra inconsistencia entre
pam_mkhomedir y la orden
su, esta orden no funcionará bien cuando
intentemos cambiar de usuario a uno que no tenga aún creado su
directorio de conexión (es decir, cuando interviene
pam_mkhomedir). La causa está en que el UID
efectivo del proceso que crea el directorio del usuario no es el
de root
, y por tanto no tiene permisos para
crear el directorio en /home/
. Este
problema puede solucionarse únicamente mediante permisos de
escritura a todos los usuarios en /home/
,
cosa muy poco sensata en cualquier caso. Por tanto, si ese es el
efecto que observa en su sistema Linux, no podrá utilizar
su - usuario para usuarios que no tengan
directorio home ya creado.