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
sudoy 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.
Advertenciano 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:
sudo apt update
sudo apt install samba smbclient
Comprueba la versión y que el servicio principal, smbd, está en marcha:
smbd --version
systemctl status smbd --no-pager
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:
sudo groupadd equipo
Crea la carpeta compartida en /srv/samba, asígnala al grupo y dale permisos 2770:
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.
ls -ld /srv/samba/equipo
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:
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:
sudo smbpasswd -a ana
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:
sudo pdbedit -L
ana:1001:
Paso 4: Configurar Samba
El archivo de configuración es /etc/samba/smb.conf. Haz una copia antes de editarlo:
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]:
server min protocol = SMB2_10
server smb encrypt = desired
map to guest = never
server min protocol = SMB2_10rechaza SMB1, un protocolo obsoleto e inseguro.server smb encrypt = desiredcifra el tráfico con los clientes que lo soportan (Windows 8 y posteriores, macOS y Linux actuales).map to guest = neverimpide el acceso como invitado con credenciales erróneas.
Al final del archivo, añade el recurso compartido:
[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 = @equipolimita el acceso a los miembros del grupo.force group,create maskydirectory maskgarantizan que todo lo que se crea pertenece al grupo y es editable por él, sea cual sea el cliente.- El módulo
recyclemueve los archivos borrados a.papelera/<usuario>dentro del recurso en lugar de eliminarlos.
Valida la configuración con testparm:
testparm -s
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:
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:
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:
sudo ufw allow from 10.8.0.0/24 to any app Samba
Comprueba la regla:
sudo ufw status
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:
smbclient -L //localhost -U ana
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:
echo "prueba" > /tmp/prueba.txt
smbclient //localhost/equipo -U ana -c 'put /tmp/prueba.txt prueba.txt; ls'
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:
ls -l /srv/samba/equipo
-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:
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:
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:
sudo nano /root/.smb-equipo
username=ana
password=your_samba_password
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:
sudo mount -t cifs //your_server_ip/equipo /mnt/equipo -o credentials=/root/.smb-equipo,uid=$(id -u),gid=$(id -g)
ls /mnt/equipo
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:
//your_server_ip/equipo /mnt/equipo cifs credentials=/root/.smb-equipo,uid=1000,gid=1000,_netdev 0 0
Prueba la entrada sin reiniciar:
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:
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.
