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.

Paso 1: Instalar Samba

Instala el paquete samba desde los repositorios de Ubuntu:

sudo apt update
sudo apt install samba

Comprueba la versión y que el servicio smbd, el que sirve los archivos, está en marcha:

smbd --version
sudo systemctl status smbd
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:

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:

sudo groupadd smbusuarios

Crea un usuario para cada persona. Si solo van a usar Samba, no necesitan shell ni directorio personal:

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:

sudo smbpasswd -a ana
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:

sudo pdbedit -L
ana:1001:

Paso 3: Crear el directorio compartido

Crea el directorio y asígnalo al grupo:

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:

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:

[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:

[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ónEfecto
pathDirectorio del servidor que se comparte.
read only = noPermite escribir.
guest ok = noExige usuario y contraseña.
valid users = @smbusuariosSolo los miembros del grupo pueden conectarse (la @ indica grupo).
force groupTodos los archivos se crean con el grupo smbusuarios.
create mask / directory maskPermisos 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:

testparm -s
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:

sudo systemctl restart smbd

Paso 5: Abrir el cortafuegos

Los clientes modernos solo necesitan el puerto TCP 445. Permítelo únicamente desde tu red:

sudo ufw allow from 10.0.0.0/24 to any port 445 proto tcp
sudo ufw status
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:

sudo apt install smbclient
smbclient -L //localhost -U ana
	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:

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:

ls -l /srv/samba/compartido
-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:

\\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:

smb://10.0.0.10/compartido

Linux

Instala cifs-utils en el cliente y crea el punto de montaje:

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:

sudo nano /root/.smb-compartido
username=ana
password=tu_contraseña_samba
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:

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):

//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:

sudo smbstatus
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.