Adrián Gómez Morales

Adrián Gómez Morales

¡Hola! 👋, soy Adrián Gómez, apasionado de la informática, del software libre 🐧, de sistemas Linux 🖥️ y del mundo de la CiberSeguridad 🔐.

¿Quién soy? Más artículos

Carpetas compartidas en Linux y Windows a través de SAMBA

¿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

Imagen de Windows 10 con el explorador de archivos abiertos, en la sección de red activando la detección de redes y el uso compartido

Para poder acceder a los recursos compartidos, debemos de activar la detección de redes y el uso compartido

Imagen de Windows 10 con el explorador de archivos abiertos, en la sección de red activando la detección de redes y el uso compartido en la ventana emergente, convertir a una red privada

En caso de que aparezca este diálogo, debemos seleccionar No, convertir la red a la que estoy conectado en una red privada.

Imagen de Windows 10 con el explorador de archivos abiertos, en la sección de red para acceder a las carpetas compartidas

Indicamos la dirección IP del servidor de la siguiente forma:

\\192.168.1.50\
Imagen de Windows 10 con el explorador de archivos abiertos, en la sección de red, dentro de una carpeta compartida

Podemos acceder a la carpeta compartida

Imagen de Windows 10 desde una consola de PowerShell, ejecutando comandos en una carpeta compartida por smb

Podemos ejecutar operaciones de escritura y lectura en la carpeta compartida

Imagen de una consola de Ubuntu Server comprobando los archivos de una 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.
Volver a artículos
Código copiado al portapapeles