Samba cliente winbind

Ahora queremos que configurar el cliente para que realice búsquedas de usuarios en otro servidor y lo trate como un usuario local. Esta configuración consta de varios pasos, configurar samba y winbind, agregar el cliente al dominio, configurar la búsqueda de usuarios y configurar el sistema de validación.


Configuración Samba del cliente winbind

La configuración mínima del cliente sería, en smb.conf:

workgroup = BEZMILIANA
security = domain
winbind separator = +
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/samba/%D/%U
template shell = /bin/bash
winbind use default domain = no

En primer lugar usamos el mismo grupo de trabajo o dominio y decimos que la validación de los usuario depende del controlador de dominio que es nuestro Samba.

Los parámetros "idmap" indican un rango de identificadores, uid y gid, para asignar en esta máquina a los usario remotos. Estos valores se recuerdan, es decir que una vez que winbind asigna un uid y un gid a un usuario, volverá a asignar el mismo en sucesivas conexiones. Los parámetros "enum" permiten la enumeración de usuarios. Es conveniente añadirla.

Los parámetros "template" indican qué valores asignará winbind a los usuarios como shell y directorio personal cuando el usuario del dominio haga un "login" en esta máquina cliente.

Por último "winbind use default domain" decide la forma de los nombres de usuarios. En nuestro caso, los nombres de usuarios serán BEZMILIANA+usuario, es decir, el nombre de usuario se construye usando el nombre del dominio, el signo "+" definido en "winbind separator" y por último el nombre del usuario del dominio.


Unir la máquina al dominio

Para unir la máquina al dominio ejecutamos:

root# net join -S BEZMILIANA -Uroot%claveroorpassword

teniendo en cuenta que root tiene que ser usuario de samba en el servidor, y por supuesto, la contraseña también tiene que ser la contraseña samba de root en el servidor.

Aquí los problemas pueden surgir si el parámetro "add machine script" está mal configurado. Tras unir la máquina al dominio en el servidor se ha creado una cuenta con el nombre del cliente terminado en $.


Búsqueda de usuarios

Ahora hay que enseñar al linux cliente a que busque usuarios tambien en la red además de los que tenga definidos en su fichero /etc/passwd. Como vimos en la configuración de LDAP, esto se hace en el fichero /etc/nsswitch.conf. Lo editamos y modificamos para que las líneas correspondientes queden como:

passwd: files ldap winbind 
shadow: files ldap winbind 
group:  files ldap winbind

Cuando esta máquina busque un usuario primero lo hará en los ficheros locales, posteriormente busca en un directorio LDAP y por último pregunda a un servidor de dominio Samba/NT/200x en la red a través de winbind.


Configuración de PAM

Ahora tenemos que indicar como buscar las contraseñas para validar a los usuarios, esto se hace a través de pam. Vamos al directorio /etc/pam.d y buscamos el fichero de configuración de validación. En las distribuciones de Fedora por ejemplo editamos el fichero system-auth y lo dejamos como:

#%PAM-1.0
 auth required /lib/security/$ISA/pam_env.so 
 auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok 
 auth sufficient /lib/security/$ISA/pam_ldap.so use_first_pass
 auth sufficient /lib/security/$ISA/pam_winbind.so use_first_pass 
 auth sufficient /lib/security/$ISA/pam_smb_auth.so use_first_pass nolocal 
 auth required /lib/security/$ISA/pam_deny.so
account sufficient /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
account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/$ISA/pam_winbind.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 sufficient /lib/security/$ISA/pam_winbind.so use_authtok 
password required /lib/security/$ISA/pam_deny.so
session required /lib/security/$ISA/pam_limits.so 
session optional /lib/security/$ISA/pam_unix.so
session optional /lib/security/$ISA/pam_ldap.so
session optional /lib/security/$ISA/pam_winbind.so

Iniciar los servicios

Ahora reiniciamos Samba y winbind en el cliente:

/etc/init.d/smb restart 
/etc/init.d/winbind restart

Si todo se ha configurado correctamente ya podemos usar en esta máquina los usuarios que hay en el servidor, pero primero algunas comprobaciones.

Ejecutamos:

wbinfo -u wbinfo -g

Si no aparece algún error de validación ejecutamos:

wbinfo -a root%claveroot

y volvemos a ejecutar las órdenes anteriores; nos deben aparecer los usuarios del dominio.

Ahora entramos en una consola y cuando apareca login: respondemos:

login BEZMILIANA+usuario 
password: contraseña_de_ususario

y habremos iniciado una sesión local como un usuario remoto. Si no hemos creado el directorio /home/samba/usuario y no tenemos la línea

session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022 

en el fichero /etc/pam.d/system-aut el sistema se queja pero inicia la sesión.