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.