--- title: "Cómo configurar un servidor de archivos Samba en Ubuntu" description: "Configura Samba en Ubuntu 24.04 para compartir carpetas con Windows, macOS y Linux: crea usuarios y grupos, define permisos, limita el acceso y monta la unidad." category: "Casos de Uso" language: es source: https://cubepath.com/es/docs/casos-de-uso/servidor-de-archivos-con-samba updated: 2026-09-25 --- # Cómo configurar un servidor de archivos Samba en Ubuntu Samba implementa el protocolo SMB, el mismo que usa Windows para compartir carpetas, y permite que equipos con Windows, macOS y Linux accedan a archivos guardados en un servidor Linux. En este tutorial configurarás Samba en Ubuntu 24.04 con un recurso compartido para un equipo de trabajo, usuarios con contraseña propia, permisos basados en grupos y una papelera de reciclaje, y lo montará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, con espacio en disco suficiente para los archivos que vayas a compartir. - Un usuario no root con privilegios `sudo` y UFW activo con SSH permitido. - Una red de confianza entre los clientes y el servidor: una red privada, una VPN como WireGuard o, como mínimo, las IP fijas de los clientes. > Advertencia: no expongas los puertos de SMB (139 y 445) a todo Internet. Son objetivo habitual de escaneos y ataques, y muchos proveedores de acceso los bloquean. En esta guía el firewall solo admite la red de la VPN o las IP que indiques. En los ejemplos, la subred de confianza es `10.8.0.0/24` (la de una VPN WireGuard) y el servidor tiene la IP `your_server_ip` dentro de ella. ## Paso 1: Instalar Samba Instala el servidor Samba y el cliente `smbclient`, que usarás para probar la configuración desde el propio servidor: ```bash sudo apt update sudo apt install samba smbclient ``` Comprueba la versión y que el servicio principal, `smbd`, está en marcha: ```bash smbd --version systemctl status smbd --no-pager ``` ```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 Thu 2026-09-25 11:02:40 UTC; 20s ago ``` ## Paso 2: Crear el grupo y la carpeta compartida Los permisos en Samba se apoyan en los permisos de Linux, así que la forma más sencilla de gestionar un recurso de equipo es un grupo de Linux. Crea el grupo `equipo`: ```bash sudo groupadd equipo ``` Crea la carpeta compartida en `/srv/samba`, asígnala al grupo y dale permisos `2770`: ```bash sudo mkdir -p /srv/samba/equipo sudo chown root:equipo /srv/samba/equipo sudo chmod 2770 /srv/samba/equipo ``` El `7` del grupo le da lectura y escritura, el `0` final impide el acceso al resto de usuarios y el `2` inicial (bit setgid) hace que todo lo que se cree dentro herede el grupo `equipo`, de modo que los archivos de un usuario sean editables por los demás. ```bash ls -ld /srv/samba/equipo ``` ```output drwxrws--- 2 root equipo 4096 Sep 25 11:05 /srv/samba/equipo ``` ## Paso 3: Crear los usuarios de Samba Cada usuario de Samba debe existir también como usuario de Linux, pero no necesita poder iniciar sesión por SSH. Crea el usuario `ana` sin contraseña de Linux y con un shell que no permite acceso interactivo, y añádelo al grupo: ```bash sudo adduser --disabled-password --gecos "" --shell /usr/sbin/nologin ana sudo usermod -aG equipo ana ``` Samba guarda sus propias contraseñas, independientes de las del sistema. Asigna una a `ana`: ```bash sudo smbpasswd -a ana ``` ```output New SMB password: Retype new SMB password: Added user ana. ``` Repite los tres comandos para cada persona del equipo. Para ver los usuarios registrados en Samba: ```bash sudo pdbedit -L ``` ```output ana:1001: ``` ## Paso 4: Configurar Samba El archivo de configuración es `/etc/samba/smb.conf`. Haz una copia antes de editarlo: ```bash sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig sudo nano /etc/samba/smb.conf ``` En la sección `[global]`, que ya existe al principio del archivo, añade estas líneas justo debajo de `[global]`: ```ini server min protocol = SMB2_10 server smb encrypt = desired map to guest = never ``` - `server min protocol = SMB2_10` rechaza SMB1, un protocolo obsoleto e inseguro. - `server smb encrypt = desired` cifra el tráfico con los clientes que lo soportan (Windows 8 y posteriores, macOS y Linux actuales). - `map to guest = never` impide el acceso como invitado con credenciales erróneas. Al final del archivo, añade el recurso compartido: ```ini [equipo] comment = Archivos del equipo path = /srv/samba/equipo browseable = yes read only = no valid users = @equipo force group = equipo create mask = 0660 directory mask = 2770 vfs objects = recycle recycle:repository = .papelera/%U recycle:keeptree = yes recycle:versions = yes ``` - `valid users = @equipo` limita el acceso a los miembros del grupo. - `force group`, `create mask` y `directory mask` garantizan que todo lo que se crea pertenece al grupo y es editable por él, sea cual sea el cliente. - El módulo `recycle` mueve los archivos borrados a `.papelera/` dentro del recurso en lugar de eliminarlos. Valida la configuración con `testparm`: ```bash testparm -s ``` ```output Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE ... [equipo] comment = Archivos del equipo force group = equipo ... ``` La línea `Loaded services file OK.` confirma que no hay errores de sintaxis. Aplica los cambios: ```bash sudo systemctl restart smbd ``` Samba también instala `nmbd`, el servicio de nombres NetBIOS que permite descubrir el servidor en el explorador de red de Windows. En un servidor en la nube no aporta nada y puedes desactivarlo: ```bash sudo systemctl disable --now nmbd ``` ## Paso 5: Abrir el firewall solo a la red de confianza Samba añade un perfil de aplicación a UFW con sus puertos. Permítelo únicamente desde la subred de la VPN: ```bash sudo ufw allow from 10.8.0.0/24 to any app Samba ``` Comprueba la regla: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Samba ALLOW 10.8.0.0/24 ``` ## Paso 6: Probar el recurso desde el servidor Antes de pasar a los clientes, conéctate desde el propio servidor con `smbclient`. Lista los recursos disponibles como `ana`: ```bash smbclient -L //localhost -U ana ``` ```output Password for [WORKGROUP\ana]: Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers equipo Disk Archivos del equipo IPC$ IPC IPC Service (my-server server (Samba, Ubuntu)) ``` Sube un archivo de prueba al recurso: ```bash echo "prueba" > /tmp/prueba.txt smbclient //localhost/equipo -U ana -c 'put /tmp/prueba.txt prueba.txt; ls' ``` ```output putting file /tmp/prueba.txt as \prueba.txt (0.5 kb/s) (average 0.5 kb/s) . D 0 Thu Sep 25 11:20:04 2026 .. D 0 Thu Sep 25 11:05:12 2026 prueba.txt A 7 Thu Sep 25 11:20:04 2026 ``` Comprueba en el disco que el archivo pertenece al grupo `equipo`: ```bash ls -l /srv/samba/equipo ``` ```output -rw-rw---- 1 ana equipo 7 Sep 25 11:20 prueba.txt ``` ## Paso 7: Conectar desde los clientes ### Windows En el Explorador de archivos, escribe `\\your_server_ip\equipo` en la barra de direcciones e introduce el usuario y la contraseña de Samba. Para asignarle una letra de unidad desde PowerShell o CMD: ```text net use Z: \\your_server_ip\equipo /user:ana /persistent:yes ``` ### macOS En Finder, abre **Ir > Conectarse al servidor** (`Cmd+K`), escribe `smb://your_server_ip/equipo` e introduce las credenciales. ### Linux Instala las utilidades CIFS y crea un punto de montaje: ```bash sudo apt install cifs-utils sudo mkdir -p /mnt/equipo ``` Guarda las credenciales en un archivo que solo root pueda leer, en lugar de escribirlas en la línea de comandos: ```bash sudo nano /root/.smb-equipo ``` ```ini username=ana password=your_samba_password ``` ```bash sudo chmod 600 /root/.smb-equipo ``` Monta el recurso. Las opciones `uid` y `gid` hacen que los archivos aparezcan como propiedad de tu usuario local: ```bash sudo mount -t cifs //your_server_ip/equipo /mnt/equipo -o credentials=/root/.smb-equipo,uid=$(id -u),gid=$(id -g) ls /mnt/equipo ``` ```output prueba.txt ``` Para montarlo en cada arranque, añade esta línea a `/etc/fstab` del cliente, sustituyendo `1000` por tu UID y GID. La opción `_netdev` espera a que la red esté disponible: ```text //your_server_ip/equipo /mnt/equipo cifs credentials=/root/.smb-equipo,uid=1000,gid=1000,_netdev 0 0 ``` Prueba la entrada sin reiniciar: ```bash sudo umount /mnt/equipo sudo mount -a ``` ## Solución de problemas **`NT_STATUS_LOGON_FAILURE` al conectar.** El usuario no existe en Samba o la contraseña es incorrecta. Comprueba que aparece en `sudo pdbedit -L` y vuelve a fijarla con `sudo smbpasswd -a ana`. **`NT_STATUS_ACCESS_DENIED` al listar o escribir.** El usuario no pertenece al grupo o los permisos de la carpeta no son los del paso 2. Verifica con `id ana` y `ls -ld /srv/samba/equipo`. Tras añadir un usuario a un grupo, los clientes deben desconectarse y volver a conectar. **El cliente no llega al servidor (tiempo de espera agotado).** Comprueba que el cliente está en la subred permitida en UFW y que Samba escucha en el puerto 445: ```bash sudo ss -ltnp | grep 445 ``` **Windows no permite el acceso y menciona el acceso de invitados o SMB1.** Las versiones actuales de Windows rechazan SMB1 y el acceso sin contraseña, justo lo que esta configuración evita. Conéctate siempre con un usuario de Samba y revisa los mensajes del servidor en `sudo journalctl -u smbd` y en `/var/log/samba/`. ## Conclusión Tu servidor Ubuntu 24.04 comparte ahora una carpeta de equipo por SMB con usuarios propios, permisos por grupo, cifrado con los clientes compatibles, papelera de reciclaje y acceso limitado a la red de confianza. Para crear más recursos, repite el patrón: un grupo de Linux, una carpeta con permisos `2770` y una sección nueva en `smb.conf`. Como siguientes pasos, puedes programar copias de seguridad de `/srv/samba` con restic o rsync, aplicar cuotas de disco por usuario o activar `[homes]` en `smb.conf` para que cada usuario tenga su carpeta privada.