Configurar un servidor Samba de forma básica
Hasta hace no mucho, usaba en mi centro de trabajo un servidor NAS doméstico que hacía sus funciones de forma algo lenta pero sin problemas de seguridad ni estabilidad. Sin embargo, a raíz de un problema de reinicio y pérdida de acceso al mismo, decidir dar el salto y poner en marcha un auténtico servidor NAS.
Preparé una máquina virtual con Xen, preparé el almacenamiento en mis módulos SAS, configuré el direccionamiento del mismo y arranqué la máquina. ¿Qué me quedaba por instalar y configurar? Un servidor Samba. Veamos cómo hacerlo.
El siguiente procedimiento vale sobre cualquier distribución de GNU/Linux. Sólo deberéis cambiar ciertos detalles de sistemas de paquetes, pero el método es el mismo y es una solución genial. Multitud de empresas u organizaciones disponen de un servidor Linux y de clientes finales con Microsoft Windows. Tanto si el cliente final es Windows como si es Linux o Mac OS, esta solución provee un método sencillo, robusto y fiable para implantar algo tan necesario como almacenamiento en red (ya sea para copias de seguridad, para trabajo en equipo, para crear un repositorio central o para lo que se busque).
He usado Scientific Linux, por lo que será el mismo procedimiento en Fedora, Red Hat, Cent OS y derivados. En Ubuntu, Debian y derivadas usaremos apt y el resto, sus propios paquetes (o compilaciones del fuente).
Instalación de los paquetes
Lo primero será instalar los paquetes necesarios. Hablamos de:
- samba: servidor SMB
- samba-client: clientes para el protoclo SMB
- samba-common: ficheros comunes a ambos
Hacemos lo siguiente:
yum install samba samba-common
Y en los clientes:
yum install samba-client samba-common
En los clientes Windows no es necesario instalar nada.
Alta de usuarios
Los usuarios de Windows, deberán darse alta con el mismo usuario que usan en Windows, es decir, si se llama “Javier” su usuario Windows, “Javier” deberá ser su usuario Samba. Podéis evitar esto haciendo un conector, yo he implementado uno en .NET que me resuelve esta cuestión pero lo más simple, es usar el mismo nombre.
Veamos, lo primero será crear el usuario:
useradd -s /sbin/nologin nombre-usuario
Indicamos que no puede iniciar sesión en la parte de la shell porque suponemos que a un servidor SAMBA no se van a conectar por SSH o Telnet. Si sí van a hacerlo, sería de la siguiente forma (incluimos la creación de contraseña para el usuario):
useradd -s /bin/bash nombre-usuario passwd nombre-usuario
Una vez el usuario existe en el sistema, indicamos que es un usuario de SAMBA y creamos su contraseña para acceder al sistema SAMBA.
smbpasswd -a nombre-usuario
Introducimos la contraseña y estará todo listo.
Configuraciones en smb.conf
El fichero smb.conf, controla a través de opciones especificadas en texto plano, como les gusta a los puristas Unix (a mí también), las opciones. Lo editamos con el editor que queramos y cambiamos las opciones según nos interese. Está situado en el directorio /etc/samba.
Veamos los más importantes para una configuración rápida y básica:
- workgroup: grupo de trabajo
- server string: cadena del servidor que anuncia cuando te conectas a modo de anuncio (parecido a lo que hacen los servidores FTP)
- hosts-allow: lista de direcciones que podrán conectarse
Directorios compartidos
Dentro de este mismo fichero, encontramos las directrices que permitirán compartir los directorios. La siguiente orden, hace que cada usuario tenga accesible a través del servidor SAMBA su propio directorio $HOME:
[homes] comment = Home Directories browseable = yes writable = yes ; valid users = %S ; valid users = MYDOMAIN\%S
Dejando comentados valid users todos los usuarios por defecto tendrán acceso. Si queremos especificar un directorio más a compartir, simplemente añadiremos:
[nombre_directorio] comment = Otro directorio que estamos compartiendo path = /ruta/directorio public = no writable = yes browseable = yes
Podemos controlar mediante la política de permisos de directorios de Unix (permisos, grupos y usuarios) quiénes podrán escribir y quienes no sobre dicho directorio.
Inicio, parada y arranque por defecto del servicio
Para iniciar el servicio haremos:
service smb start
Para pararlo:
service smb stop
Y para reiniciarlo:
service smb restart
Ahora deberemos incluirlo en el arranque, para asegurarnos de que todo funciona correctamente tras los diferentes reinicios:
chkconfig smb on
Conexiones desde clientes
Veamos una a una las posibilidades que tenemos para conectarnos (suponiendo que hay direccionamiento y no hay problemas de cortafuegos).
Desde Linux con la terminal
Con smbclient:
smbclient //direccion_maquina/usuario -U usuario
El recurso puede ser el mismo, por ejemplo para su $HOME:
smbclient //direccion_maquina/recurso -U usuario
Desde Linux usando Nautilus (el explorador de ficheros de Gnome)
Nos dirigimos a la barra de direcciones, si tenemos los directorios desplegados en forma de botones en la parte superior, presionamos “Control+L” y listo, aparecerá una barra de direcciones. En dicha barra escribimos: smb://usuario@direccion_servidor/recurso y tras pedirnos la autenticación accederemos.
Desde Windows con la terminal
Abrimos la terminal (cmd.exe) y escribimos:
net use * \\direccion_servidor\recurso /USER:usuario
Tras autenticarnos, ya estaremos en el sistema. El asterisco, sirve para que el sistema elija la primera letra que tenga libre.
Desde Windows con el entorno gráficos
Al igual que hemos hecho antes con Nautilus en Gnome, accedemos al explorador de ficheros de Windows y en la barra de direcciones indicamos:
\\direccion_servidor\recurso
Saldrá una pantalla pidiéndonos los credenciales y estaremos conectados. Otra opción es conectar el recurso en el servidor como una unidad de red.