Configurar un servidor Samba de forma básica

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.

Samba logo

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.