--- title: "Cómo compartir archivos con Samba en Ubuntu 24.04" description: "Instala Samba en Ubuntu 24.04, crea una carpeta compartida con usuarios autenticados y conéctate a ella desde Windows, macOS y Linux de forma segura." category: "Gestión de Almacenamiento" language: es source: https://cubepath.com/es/docs/gestión-de-almacenamiento/configuracion-de-samba-para-compartir-archivos updated: 2026-09-25 --- # Cómo compartir archivos con Samba en Ubuntu 24.04 Samba implementa el protocolo SMB, el mismo que usa Windows para compartir carpetas en red, de modo que un servidor Linux puede ofrecer archivos a equipos Windows, macOS y Linux sin software adicional en los clientes. En este tutorial instalarás Samba en Ubuntu 24.04, crearás una carpeta compartida a la que solo accede un grupo de usuarios autenticados, restringirás el acceso por red y te conectarás desde los tres sistemas operativos. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - UFW activo, con el acceso SSH ya permitido. - La red desde la que se conectarán los clientes. En los ejemplos es `10.0.0.0/24` y la IP del servidor es `10.0.0.10`; sustitúyelas por las tuyas. > Advertencia: no publiques nunca el puerto 445 en Internet. SMB es uno de los servicios más atacados y escaneados. Si los clientes no están en la misma red privada que el servidor, conéctalos a través de una VPN (WireGuard, Tailscale o similar) y permite Samba solo desde esa red. ## Paso 1: Instalar Samba Instala el paquete `samba` desde los repositorios de Ubuntu: ```bash sudo apt update sudo apt install samba ``` Comprueba la versión y que el servicio `smbd`, el que sirve los archivos, está en marcha: ```bash smbd --version sudo systemctl status smbd ``` ```output Version 4.19.5-Ubuntu ● smbd.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smbd.service; enabled; preset: enabled) Active: active (running) since ... ``` El paquete también instala `nmbd`, que anuncia el servidor en la red mediante NetBIOS. No es necesario para conectarse por IP o nombre DNS, así que puedes desactivarlo si no lo usas: ```bash sudo systemctl disable --now nmbd ``` ## Paso 2: Crear el grupo y los usuarios Samba usa cuentas del sistema Linux, pero con una contraseña propia guardada en su base de datos. Crea un grupo para los usuarios que podrán acceder a la carpeta: ```bash sudo groupadd smbusuarios ``` Crea un usuario para cada persona. Si solo van a usar Samba, no necesitan shell ni directorio personal: ```bash sudo useradd -M -s /usr/sbin/nologin -G smbusuarios ana ``` Asigna al usuario su contraseña de Samba. Se te pedirá dos veces; elige una contraseña robusta: ```bash sudo smbpasswd -a ana ``` ```output New SMB password: Retype new SMB password: Added user ana. ``` Si el usuario ya existía en el sistema, añádelo al grupo con `sudo usermod -aG smbusuarios nombre_usuario` y ejecuta igualmente `smbpasswd -a`. Lista los usuarios registrados en Samba para comprobarlo: ```bash sudo pdbedit -L ``` ```output ana:1001: ``` ## Paso 3: Crear el directorio compartido Crea el directorio y asígnalo al grupo: ```bash sudo mkdir -p /srv/samba/compartido sudo chown root:smbusuarios /srv/samba/compartido sudo chmod 2770 /srv/samba/compartido ``` El modo `2770` da lectura y escritura al propietario y al grupo, ningún acceso al resto, y el bit `setgid` (el `2` inicial) hace que los archivos nuevos hereden el grupo `smbusuarios` en lugar del grupo primario de quien los crea. Así todos los miembros pueden editar los archivos de los demás. ## Paso 4: Configurar Samba La configuración está en `/etc/samba/smb.conf`. Haz una copia del archivo original antes de tocarlo: ```bash sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig sudo nano /etc/samba/smb.conf ``` En la sección `[global]`, añade estas líneas justo debajo de la cabecera `[global]` para exigir versiones modernas del protocolo y limitar las redes que pueden conectarse: ```ini [global] server min protocol = SMB3 hosts allow = 127.0.0.1 ::1 10.0.0.0/24 hosts deny = 0.0.0.0/0 ``` `SMB3` es compatible con Windows 10 y 11, macOS actuales y el cliente CIFS de Linux. Si tienes equipos antiguos que solo hablan SMB2, usa `SMB2_10`, pero nunca habilites SMB1. Al final del archivo, añade la definición de la carpeta compartida: ```ini [compartido] comment = Carpeta compartida del equipo path = /srv/samba/compartido browseable = yes read only = no guest ok = no valid users = @smbusuarios force group = smbusuarios create mask = 0660 directory mask = 2770 ``` Qué hace cada opción: | Opción | Efecto | | --- | --- | | `path` | Directorio del servidor que se comparte. | | `read only = no` | Permite escribir. | | `guest ok = no` | Exige usuario y contraseña. | | `valid users = @smbusuarios` | Solo los miembros del grupo pueden conectarse (la `@` indica grupo). | | `force group` | Todos los archivos se crean con el grupo `smbusuarios`. | | `create mask` / `directory mask` | Permisos máximos de los archivos y directorios nuevos. | Guarda el archivo y valida la sintaxis con `testparm`, que muestra errores y la configuración efectiva: ```bash testparm -s ``` ```output Load smb config files from /etc/samba/smb.conf Loaded services file OK. ... [compartido] comment = Carpeta compartida del equipo create mask = 0660 directory mask = 02770 force group = smbusuarios path = /srv/samba/compartido read only = No valid users = @smbusuarios ``` Si ves `Loaded services file OK.` la sintaxis es correcta. Reinicia Samba para aplicar los cambios: ```bash sudo systemctl restart smbd ``` ## Paso 5: Abrir el cortafuegos Los clientes modernos solo necesitan el puerto TCP 445. Permítelo únicamente desde tu red: ```bash sudo ufw allow from 10.0.0.0/24 to any port 445 proto tcp sudo ufw status ``` ```output To Action From -- ------ ---- OpenSSH ALLOW Anywhere 445/tcp ALLOW 10.0.0.0/24 ``` ## Paso 6: Probar el acceso desde el propio servidor `smbclient` es un cliente SMB de línea de comandos, útil para comprobar la configuración antes de ir a los clientes. Instálalo y lista los recursos compartidos con el usuario que creaste: ```bash sudo apt install smbclient smbclient -L //localhost -U ana ``` ```output Sharename Type Comment --------- ---- ------- compartido Disk Carpeta compartida del equipo IPC$ IPC IPC Service (Samba 4.19.5-Ubuntu) ``` Conéctate a la carpeta y sube un archivo de prueba: ```bash echo "hola" > /tmp/prueba.txt smbclient //localhost/compartido -U ana -c 'put /tmp/prueba.txt prueba.txt; ls' ``` Si el archivo aparece en el listado, la escritura funciona. En el servidor verás que pertenece al grupo `smbusuarios`: ```bash ls -l /srv/samba/compartido ``` ```output -rw-rw---- 1 ana smbusuarios 5 sep 25 10:40 prueba.txt ``` ## Paso 7: Conectarse desde los clientes ### Windows Abre el Explorador de archivos y escribe en la barra de direcciones: ```text \\10.0.0.10\compartido ``` Introduce el usuario `ana` y su contraseña de Samba. Para tenerlo siempre disponible, haz clic derecho en **Este equipo**, elige **Conectar a unidad de red** y usa la misma ruta. ### macOS En Finder, pulsa **Cmd + K** (Ir > Conectarse al servidor) y escribe: ```text smb://10.0.0.10/compartido ``` ### Linux Instala `cifs-utils` en el cliente y crea el punto de montaje: ```bash sudo apt install cifs-utils sudo mkdir -p /mnt/compartido ``` Para no dejar la contraseña en `/etc/fstab`, guárdala en un archivo de credenciales legible solo por `root`: ```bash sudo nano /root/.smb-compartido ``` ```ini username=ana password=tu_contraseña_samba ``` ```bash sudo chmod 600 /root/.smb-compartido ``` Monta la carpeta, indicando el usuario y grupo locales que serán propietarios de los archivos en el cliente: ```bash sudo mount -t cifs //10.0.0.10/compartido /mnt/compartido -o credentials=/root/.smb-compartido,uid=$(id -u),gid=$(id -g) df -h /mnt/compartido ``` Para montarla en cada arranque, añade esta línea a `/etc/fstab` (sustituye `1000` por tu UID y GID): ```text //10.0.0.10/compartido /mnt/compartido cifs credentials=/root/.smb-compartido,uid=1000,gid=1000,_netdev,nofail 0 0 ``` Comprueba la entrada con `sudo umount /mnt/compartido && sudo mount -a`. ## Paso 8: Supervisar las conexiones `smbstatus` muestra quién está conectado, a qué recurso, con qué versión del protocolo y qué archivos tiene abiertos: ```bash sudo smbstatus ``` ```output Samba version 4.19.5-Ubuntu PID Username Group Machine Protocol Version Encryption Signing ------------------------------------------------------------------------------------------------------------------ 12345 ana ana 10.0.0.20 (ipv4:10.0.0.20:51234) SMB3_11 - partial(AES-128-GMAC) ``` Los registros de cada cliente se guardan en `/var/log/samba/`. ## Solución de problemas **`NT_STATUS_LOGON_FAILURE`**: la contraseña no es correcta o el usuario no está en la base de datos de Samba. Comprueba con `sudo pdbedit -L` y restablécela con `sudo smbpasswd ana`. Si la cuenta está deshabilitada, actívala con `sudo smbpasswd -e ana`. **`NT_STATUS_ACCESS_DENIED` al entrar en la carpeta**: el usuario no pertenece a `smbusuarios`. Revísalo con `id ana` y añádelo con `sudo usermod -aG smbusuarios ana`. **`Permission denied` al escribir**: los permisos del directorio no coinciden con la configuración. Samba nunca concede más de lo que permite el sistema de archivos; comprueba con `ls -ld /srv/samba/compartido` que el grupo es `smbusuarios` y el modo `drwxrws---`. **El cliente no llega al servidor**: comprueba desde el cliente que el puerto responde (`nc -zv 10.0.0.10 445` en Linux o `Test-NetConnection 10.0.0.10 -Port 445` en PowerShell) y que la IP del cliente está dentro de `hosts allow`. ## Conclusión Tienes un servidor Samba en Ubuntu 24.04 que comparte una carpeta con un grupo de usuarios autenticados, acepta solo SMB3 y únicamente desde tu red. Puedes crear más carpetas repitiendo los pasos 3 y 4 con grupos distintos, añadir la opción `server smb encrypt = required` en `[global]` para cifrar todo el tráfico, o programar copias de seguridad de `/srv/samba` para proteger los datos compartidos.