¿Qué es Samba?
Samba es una implementación libre del protocolo SMB/CIFS (Server Message Block/Common Internet File System), que permite compartir archivos, impresoras y otros recursos entre sistemas Linux y Windows dentro de una misma red. Este protocolo facilita la interoperabilidad entre diferentes plataformas, haciendo posible que un servidor Linux actúe como proveedor de recursos accesibles desde equipos Windows de forma sencilla, segura y eficiente.
Prerrequisitos
Es muy recomendable tener una dirección IP estática en el servidor, esto puede variar de la distribución que estés utilizando y del entorno gráfico que uses (aunque no recomiendo instalar entornos gráficos en servidores, ya que consumen más recursos y por el principio de mínima superficie de exposición), en este caso se estará usando la IP 192.168.1.50
Instalación de los paquetes necesarios
Primero necesitamos instalar el paquete samba de los repositorios
Importante: Es muy aconsejable actualizar la lista de paquetes e instalar las actualizaciones de estos para evitar problemas
sudo apt update && sudo apt upgrade -y
Ahora instalaremos el paquete necesario
sudo apt install samba -y
Crear la carpeta compartida
Vamos a crear la carpeta compartida dentro del directorio /srv (Aunque realmente podría ser cualquier otro directorio, pero es recomendable seguir cierto orden dentro del sistema para evitar dolores de cabeza en el futuro)
sudo mkdir /srv/compartida
Le aplicamos los permisos 777 a dicha carpeta, ya que los permisos los vamos a gestionar desde el archivo de configuración del propio SAMBA
sudo chmod 777 /srv/compartida
Creación de usuarios virtuales para SAMBA
A continuación crearemos los usuarios virtuales que usaremos con SAMBA, para ello usaremos el comando:
sudo smbpasswd -a usuario
Deberemos de especificar una contraseña y luego volverla a repetir, como siempre, es muy aconsejable usar una contraseña única y compleja
Configuración de SAMBA
Antes de nada, vamos a realizar una copia de seguridad del archivo /etc/samba/smb.conf , que se trata de la configuración por defecto.
sudo cp -r /etc/samba/smb.conf /etc/samba/smb.conf.backup
Una vez hecha la copia de seguridad, vamos a proceder a la configuración, para ello usamos el editor de texto de preferencia (Vim, nano, vi u otro editor gráfico)
sudo nano /etc/samba/smb.conf
E indicamos la configuración correspondiente
[Compartida]
comment = Carpeta compartida
path = /srv/compartida
browseable = yes
read list = usuario
write list = usuario
valid users = usuario
- Comment -> Es un comentario descriptivo de la carpeta compartida
- path -> Es la ruta absoluta dentro del sistema de la carpeta que vamos a compartir
- browseable -> Permite que la carpeta aparezca al explorar la red
- read list -> Usuarios con permisos de lectura
- write list -> Usuarios con permisos de escritura
- valid users -> Restringe el acceso a los usuarios indicados
Reinicio del servicio
Tenemos que reiniciar el servicio para aplicar la nueva configuración
sudo systemctl restart smbd.service
Y muy importante también revisar que el servicio esté funcionando después de haber aplicado la nueva configuración
sudo systemctl status smbd.service
Reglas del Firewall
En muchas distribuciones de Linux, el firewall por defecto no bloquea nada, pero en caso de tener un firewall que si lo hace o bien que hayas configurado tu mismo, es importante permitir el tráfico hacia el servidor, en caso de que uses UFW:
sudo ufw allow from 192.168.1.0/24 to any port 445 proto tcp
Puerto 445 (TCP) es utilizado por SMB (Server Message Block)
sudo ufw allow from 192.168.1.0/24 to any port 139 proto tcp
Puerto 139 (TCP) también pertenece al protocolo SMB, pero en su forma antigua (NetBIOS Session Service). Se usa principalmente por versiones anteriores de SMB (SMB1) y NetBIOS sobre TCP/IP. Permitir este puerto habilita compatibilidad con clientes más viejos o redes que todavía usan NetBIOS.
Cliente Windows
En los protocolos cliente/servidor, no hay que olvidarse de los clientes, por ello, usaré de cliente, Windows 10 PRO para demostrar que se comparten las carpetas
Para poder acceder a los recursos compartidos, debemos de activar la detección de redes y el uso compartido
En caso de que aparezca este diálogo, debemos seleccionar No, convertir la red a la que estoy conectado en una red privada.
Indicamos la dirección IP del servidor de la siguiente forma:
\\192.168.1.50\
Podemos acceder a la carpeta compartida
Podemos ejecutar operaciones de escritura y lectura en la carpeta compartida
Podemos ver que los cambios aplicados por el cliente, se reflejan en el servidor
Conclusión
Samba es una herramienta confiable y versátil para compartir archivos entre Linux y Windows. Con una configuración fácil de entender, con la que podemos crear un entorno de red estable, accesible y fácil de mantener. Una solución simple, efectiva y muy útil para cualquier entorno.