Logotipo de Bitdoze

Configurar Samba en Linux: guía completa para una unidad compartida

Configura Samba en Linux paso a paso con esta guía completa que cubre la configuración de smb.conf, la seguridad SMB3, las correcciones para Windows 11 24H2, el descubrimiento con wsdd2 y la configuración de clientes.

Dragos

Actualizado Publicado 38 min de lectura

Configurar Samba en Linux: guía completa para una unidad compartida

Si necesitas configurar Samba en Linux para compartir archivos entre plataformas con Windows, macOS y dispositivos móviles, esta guía recorre todo el proceso: configuración de smb.conf, compatibilidad con Windows 11 24H2, WS-Discovery y parches de seguridad.

Aunque NFS funciona bien para compartir archivos entre sistemas Linux, muchos servidores domésticos conviven con una mezcla de sistemas operativos. Cuando necesitas compartir archivos entre servidores Linux y máquinas Windows, o quieres compatibilidad con más dispositivos, Samba lo resuelve.

Divulgación de afiliados

Algunos enlaces de hardware de esta guía son enlaces de afiliado, incluidos los redireccionamientos /go/ que llevan a Amazon. Si compras a través de ellos, gano una pequeña comisión sin coste adicional para ti.

Yo ejecuto Samba junto a NFS en mi mini PC N100, que aloja Jellyfin y gestiona las copias de seguridad. Todos los dispositivos de la familia (portátiles Windows, teléfonos Android y máquinas Linux) acceden al contenido multimedia y a los documentos compartidos a través de él. NFS me da rendimiento entre sistemas Linux y Samba cubre todo lo demás. Si estás buscando hardware, el GMKtec M5 Ultra es una buena opción compacta para este tipo de servidor doméstico siempre encendido.

Entendiendo SMB, CIFS y Samba

Evolución del protocolo

SMB (Server Message Block) es el protocolo original desarrollado por Microsoft. CIFS (Common Internet File System) fue la versión extendida de Microsoft. Las implementaciones modernas usan los protocolos SMB2/SMB3, pero los términos se suelen usar indistintamente.

¿Qué es Samba?

Samba es una implementación de código abierto del protocolo SMB/CIFS que permite a los sistemas Linux y Unix comunicarse con sistemas Windows usando los protocolos de red nativos de Windows. Convierte tu máquina Linux en un servidor de archivos compatible con Windows.

Qué te ofrece Samba

  • Compatibilidad multiplataforma: funciona con Windows, macOS, Linux y dispositivos móviles
  • Integración nativa: aparece como una unidad de red estándar en el Explorador de Windows
  • Autenticación avanzada: admite Active Directory y gestión de usuarios compleja
  • Impresoras compartidas: puede compartir impresoras en la red
  • Amplia compatibilidad de dispositivos: compatible con smart TVs, reproductores multimedia y dispositivos IoT

Comparación Samba vs NFS

Característica Samba (SMB/CIFS) NFS
Multiplataforma Excelente (nativo en Windows) Limitada (enfoque Linux/Unix)
Rendimiento en Linux Bueno Excelente
Opciones de seguridad Avanzadas (integración con AD) Básicas a moderadas
Complejidad de configuración Moderada Sencilla
Soporte de dispositivos móviles Excelente Limitado
Integración con Windows Nativa Requiere herramientas de terceros
Funciones modernas SMB3 Directory Leases (4.22+), Unix Extensions (4.23+) Delegaciones NFSv4

Si solo necesitas acceso a archivos por HTTP, servir un recurso WebDAV con Nginx es otra opción que vale la pena considerar.

Requisitos previos y planificación

Antes de configurar Samba, asegúrate de tener:

  • Servidor Linux con espacio de almacenamiento suficiente
  • Acceso root o sudo en el servidor
  • Conectividad de red entre los dispositivos
  • Dirección IP estática para el servidor (recomendado)
  • Conocimientos de configuración de firewall
  • Cuentas de usuario planificadas para el control de acceso

Nunca expongas SMB a Internet

El puerto 445 (SMB) es uno de los puertos más atacados de internet. Nunca lo expongas al público. Si necesitas acceso remoto a los recursos Samba, usa una VPN como WireGuard o Tailscale. Consulta qué VPN de malla encaja con tu configuración o autoaloja un servidor de control de Tailscale para ver opciones.

Hardware para un servidor Samba

Samba funciona en casi cualquier hardware. Lo que importa es una caja que permanezca encendida y unos discos en los que puedas confiar. El montaje que yo haría hoy es un mini PC pequeño con una carcasa USB (DAS) para los discos de capacidad:

Pieza Elección Precio (23 oct 2026) Por qué
Mini PC Beelink EQ14 $369 N150, 16GB, 2.5GbE dual. Con 2.5GbE un único disco duro es el cuello de botella, no la red
DAS TerraMaster D4-320 $170.99 4 bahías por USB 3.2 Gen 2 (10Gbps), sin discos
Discos Discos NAS CMR ver la sección de discos Evita los discos SMR en cualquier cosa con RAID o ZFS

Si prefieres un appliance de almacenamiento en lugar de una caja Linux que mantener, un NAS de 2 bahías como el UGREEN DXP2800 ($339.99 el 23 de oct) sirve SMB listo para usar. Los compromisos entre ambas opciones están en prescindir del NAS: mini PC + DAS.

Comprueba tu versión de Samba

Ejecuta esto primero para ver qué incluye tu distribución:

bash
smbd --version
Distro Versión de Samba Notas
Debian 12 bookworm 4.17.x Antigua; considera backports por seguridad
Debian 13 trixie 4.22.10 Con parches de seguridad, incluye wsdd2
Ubuntu 24.04 LTS 4.19.x Backports de seguridad aplicados
Ubuntu 26.04 LTS 4.24.x Última serie estable
RHEL/Rocky/Alma 9 4.18–4.20 Usa los nombres de servicio smb/nmb

Mantén Samba parcheado

Samba ha tenido publicaciones de seguridad críticas durante el último año, incluido CVE-2025-10230 (CVSS 10.0), una inyección de comandos en el hook de WINS en controladores de dominio AD. Los servidores standalone (lo que configura esta guía) no están afectados por ese CVE concreto, pero mantener Samba actualizado sigue siendo importante. Consulta la sección de Seguridad y parcheo más abajo.

Arquitectura de red para un entorno mixto

Diagrama de un servidor de archivos Samba en Linux compartiendo contenido multimedia, documentos y copias de seguridad entre dispositivos Windows, macOS, Android y Linux

Paso 1: configuración del servidor Samba en Linux (smb.conf)

Esta es la sección central. Instala, configura, prueba e inicia tu servidor Samba.

Instala el paquete Samba

Debian / Ubuntu

bash
sudo apt update && sudo apt install samba samba-common-bin -y

RHEL / Fedora

bash
sudo dnf install samba samba-client samba-common -y

Crea usuarios de Samba

Samba mantiene su propia base de datos de usuarios, separada de los usuarios del sistema. Crea usuarios para compartir archivos:

bash
# Add system user (if doesn't exist)
sudo useradd -m -s /bin/bash mediauser

# Add user to Samba database
sudo smbpasswd -a mediauser

Gestión de usuarios

Los usuarios de Samba deben existir primero como usuarios del sistema. El comando smbpasswd establece una contraseña independiente para la autenticación SMB, que puede ser distinta de la contraseña del sistema. Usa smbpasswd -d mediauser para deshabilitar y smbpasswd -e mediauser para volver a habilitar a un usuario.

Crea los directorios compartidos

Organiza tus directorios compartidos:

bash
# Create main Samba directory
sudo mkdir -p /srv/samba

# Create specific share directories
sudo mkdir -p /srv/samba/media
sudo mkdir -p /srv/samba/documents
sudo mkdir -p /srv/samba/backups
sudo mkdir -p /srv/samba/public

# Set ownership
sudo chown -R mediauser:mediauser /srv/samba/media
sudo chown -R mediauser:mediauser /srv/samba/documents
sudo chown -R nobody:nogroup /srv/samba/public

# Set permissions
sudo chmod -R 755 /srv/samba
sudo chmod -R 777 /srv/samba/public

Configura smb.conf (bloque global moderno)

El archivo de configuración principal es /etc/samba/smb.conf. Haz primero una copia de seguridad del original:

bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Edita el archivo de configuración:

bash
sudo nano /etc/samba/smb.conf

Este es un bloque [global] moderno y limpio que funciona con Samba 4.19+ y Windows 11 24H2:

ini
[global]
   workgroup = WORKGROUP
   server string = BitDoze Home Server
   netbios name = HOMESERVER

   # LAN-only bind (use your real CIDR, or remove these two lines entirely)
   interfaces = lo 192.168.1.0/24
   bind interfaces only = yes

   server role = standalone server
   security = user
   map to guest = bad user
   guest account = nobody

   # Explicit SMB3 (optional, SMB1 is already disabled by default since 4.11)
   server min protocol = SMB2_10
   server max protocol = SMB3_11

   # Recommended for Windows 11 24H2+ clients (signing required by default there)
   server signing = mandatory

   logging = file
   log file = /var/log/samba/%m.log
   max log size = 1000
   log level = 1

   # Uncomment to disable legacy NetBIOS traffic entirely (port 445 only)
   # smb ports = 445
   # disable netbios = yes

Qué ha cambiado respecto a guías antiguas

Si comparas esto con tutoriales antiguos, se han eliminado varias opciones: encrypt passwords (obsoleta desde Samba 4.11, las contraseñas cifradas siempre están activadas), socket options con SO_RCVBUF/SO_SNDBUF (los kernels modernos lo gestionan; los valores grandes pueden incluso perjudicar el rendimiento), max xmit (obsoleta), aio read size/aio write size con valores en bytes (ahora es un interruptor 0/1, con 1 por defecto) y dos charset = CP932 (codificación japonesa, probablemente un error en guías antiguas). Ejecuta testparm después de editar y presta atención a los avisos de opciones obsoletas.

Define las secciones de recursos compartidos

ini
[media]
   comment = Media Files (Movies, Music, Photos)
   path = /srv/samba/media
   valid users = mediauser
   read only = no
   browsable = yes
   create mask = 0755
   directory mask = 0755
   force user = mediauser
   force group = mediauser

[documents]
   comment = Personal Documents
   path = /srv/samba/documents
   valid users = mediauser
   read only = no
   browsable = yes
   create mask = 0644
   directory mask = 0755

[backups]
   comment = Backup Storage
   path = /srv/samba/backups
   valid users = mediauser
   read only = no
   browsable = no
   create mask = 0600
   directory mask = 0700
   hide unreadable = yes

[public]
   comment = Public Share (Guest Access)
   path = /srv/samba/public
   public = yes
   guest ok = yes
   read only = no
   browsable = yes
   create mask = 0666
   directory mask = 0777
   force user = nobody
   force group = nogroup

Recursos de invitado y Windows 11 24H2

Windows 11 24H2 Pro/Enterprise/Education bloquea por defecto el inicio de sesión de invitado no seguro. El recurso [public] anterior no funcionará desde clientes 24H2 sin una cuenta de usuario real. Consulta la sección de Windows 11 24H2 para la corrección.

Con Samba 4.23+, las extensiones SMB3 Unix están habilitadas por defecto. Los archivos creados desde clientes Linux y macOS conservan sus bits de modo POSIX. Los ajustes create mask y force user siguen aplicando a los clientes Windows.

Prueba, inicia y habilita los servicios de Samba

Primero, valida tu configuración:

bash
# Test configuration syntax (read the output carefully)
sudo testparm -s

Si testparm muestra errores o parámetros desconocidos, corrígelos antes de continuar. Errores habituales: dead time (debería ser deadtime), encrypt passwords (elíminala).

Después inicia los servicios:

Debian / Ubuntu

bash
sudo systemctl enable --now smbd nmbd
sudo systemctl status smbd nmbd

RHEL / Fedora

bash
sudo systemctl enable --now smb nmb
sudo systemctl status smb nmb

Verifica que Samba está escuchando:

bash
ss -tlnp | grep -E '445|139'

Salida esperada: líneas mostrando el puerto 445 (y el 139 si NetBIOS está habilitado) en estado LISTEN.

Prueba una conexión local:

bash
smbclient //localhost/media -U mediauser -c 'ls'

Deberías ver el contenido de tu recurso media (vacío si acabas de crearlo).

Configura el firewall

UFW (Ubuntu)

bash
sudo ufw allow samba

# Or manually if you prefer:
sudo ufw allow 445/tcp    # SMB over TCP
sudo ufw allow 137/udp    # NetBIOS Name Service
sudo ufw allow 138/udp    # NetBIOS Datagram Service
sudo ufw allow 139/tcp    # NetBIOS Session Service

Si has deshabilitado NetBIOS en smb.conf (disable netbios = yes), solo necesitas el puerto 445/tcp.

firewalld (RHEL / Fedora)

bash
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

Paso 2: conecta clientes Linux, Windows y macOS

Monta recursos Samba en Linux (cifs-utils y fstab)

Instala las utilidades CIFS

bash
# Ubuntu/Debian
sudo apt install cifs-utils -y

# CentOS/RHEL
sudo dnf install cifs-utils -y

Crea el archivo de credenciales

Por seguridad, guarda las credenciales en un archivo protegido en lugar de ponerlas en fstab:

bash
sudo nano /etc/samba/credentials

Añade:

text
username=mediauser
password=your_password
domain=WORKGROUP

Protege el archivo:

bash
sudo chmod 600 /etc/samba/credentials

Monta los recursos Samba

bash
# Create mount points
sudo mkdir -p /mnt/samba-media
sudo mkdir -p /mnt/samba-docs

# Mount shares
sudo mount -t cifs //192.168.1.100/media /mnt/samba-media \
  -o credentials=/etc/samba/credentials,uid=1000,gid=1000,vers=3.1.1,iocharset=utf8

# Verify mount
df -h | grep cifs

Montaje permanente con fstab

Añade entradas a /etc/fstab para el montaje automático:

bash
sudo nano /etc/fstab

Añade estas líneas:

text
//192.168.1.100/media  /mnt/samba-media  cifs  credentials=/etc/samba/credentials,uid=1000,gid=1000,file_mode=0664,dir_mode=0775,vers=3.1.1,iocharset=utf8,nofail,x-systemd.automount,_netdev  0  0
//192.168.1.100/documents  /mnt/samba-docs  cifs  credentials=/etc/samba/credentials,uid=1000,gid=1000,file_mode=0664,dir_mode=0775,vers=3.1.1,iocharset=utf8,nofail,x-systemd.automount,_netdev  0  0

Opciones clave: vers=3.1.1 fuerza SMB3 y evita cualquier negociación SMB1. x-systemd.automount monta en el primer acceso en lugar de en el arranque (soluciona la condición de carrera en la que fstab intenta montar antes de que la red esté lista). nofail evita que el arranque se quede colgado si el recurso no está disponible.

Verifica:

bash
sudo mount -a && mount | grep cifs

Fallos habituales:

  • mount error(2): No such file or directory: nombre de recurso incorrecto
  • mount error(13): Permission denied: credenciales incorrectas o incompatibilidad de versión SMB; prueba añadiendo vers=3.0 o vers=2.0

Explorador de archivos y cliente SMB de Windows 11 / 10 (incl. correcciones de 24H2)

Conexión básica

Método 1: Explorador de archivos

  1. Abre el Explorador de archivos
  2. En la barra de direcciones, escribe: \\192.168.1.100 (sustitúyela por la IP de tu servidor)
  3. Introduce tu usuario y contraseña de Samba
  4. Navega por los recursos compartidos disponibles

Método 2: asignar una unidad de red

powershell
# Using Command Prompt
net use Z: \\192.168.1.100\media /user:mediauser

# Using PowerShell
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\192.168.1.100\media" -Credential (Get-Credential)

Cambios en Windows 11 24H2

Windows 11 24H2 exige la firma SMB

Windows 11 24H2 (y Windows Server 2025) exigen la firma SMB por defecto en las ediciones Pro, Enterprise y Education. El inicio de sesión de invitado no seguro también está bloqueado. Esta es la razón número 1 por la que los clientes Windows no consiguen conectarse a Samba tras una actualización a 24H2.

Si recibes errores de conexión tras actualizar a Windows 11 24H2, comprueba la configuración de tu cliente:

powershell
Get-SmbClientConfiguration | FL RequireSecuritySignature,EnableInsecureGuestLogons
Corrección: Windows 11 24H2 no consigue conectarse a Samba

Prueba estos pasos en orden:

1. Asegúrate de que la firma está habilitada en el servidor Samba

En la sección [global] de smb.conf:

ini
server signing = mandatory

Reinicia Samba:

bash
sudo systemctl restart smbd    # Debian/Ubuntu
sudo systemctl restart smb     # RHEL/Fedora

2. Conéctate por nombre de host, no por IP

Windows 11 24H2 puede rechazar conexiones firmadas cuando se usan direcciones IP en algunas configuraciones de grupo de trabajo. Usa el nombre NetBIOS:

text
\\HOMESERVER\media

3. Usa cuentas de usuario reales, no de invitado

Los recursos de invitado están bloqueados en 24H2 Pro+. Crea un usuario Samba real y autentícate:

powershell
net use Z: \\HOMESERVER\media /user:mediauser

4. Último recurso: desactiva el requisito de firma del cliente (no recomendado)

powershell
Set-SmbClientConfiguration -RequireSecuritySignature $false

Esto debilita la seguridad. Úsalo solo para pruebas.

Finder de macOS + descubrimiento con Avahi

  1. Abre Finder
  2. Pulsa Cmd + K para abrir “Conectar al servidor”
  3. Introduce: smb://192.168.1.100
  4. Autentícate con tus credenciales de Samba
  5. Selecciona los recursos a montar

Para que los recursos Samba aparezcan automáticamente en la barra lateral Red de Finder, instala avahi-daemon para el anuncio por mDNS/DNS-SD:

bash
sudo apt install avahi-daemon -y
sudo systemctl enable --now avahi-daemon

Crea el archivo de servicio:

bash
sudo nano /etc/avahi/services/smb.service
xml
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h SMB</name>
  <service>
    <type>_smb._tcp</type>
    <port>445</port>
  </service>
</service-group>

Reinicia avahi:

bash
sudo systemctl restart avahi-daemon

Verifica desde otro Mac: avahi-browse -a debería mostrar el servicio SMB.

Dispositivos móviles

iOS (iPhone/iPad): la app nativa Archivos incluye soporte SMB desde iOS 13. Abre Archivos → toca los tres puntos (⋯) → “Conectar al servidor” → introduce smb://192.168.1.100 → autentícate. No hace falta ninguna app de terceros.

Android: usa Solid Explorer, CX File Explorer o el cliente Android Samba de Google (samba-documents-provider en Play Store). AndSMB es otra opción.

Streaming de contenido: VLC en iOS y Android puede navegar y reproducir contenido directamente desde recursos SMB.

Paso 3: seguridad y rendimiento avanzados

Gestión de usuarios y grupos

Crea varios usuarios

bash
# Add additional users
sudo useradd -m john
sudo smbpasswd -a john

sudo useradd -m mary
sudo smbpasswd -a mary

# Create groups
sudo groupadd sambausers
sudo usermod -a -G sambausers john
sudo usermod -a -G sambausers mary

Recursos compartidos por grupo

Añade acceso basado en grupos a smb.conf:

ini
[family-photos]
   comment = Family Photo Collection
   path = /srv/samba/photos
   valid users = @sambausers
   read only = no
   browsable = yes
   create mask = 0664
   directory mask = 0775
   force group = sambausers

Cifrado y firma SMB3

La firma ya está habilitada mediante server signing = mandatory en la configuración global anterior. Esto protege contra ataques de intermediario y es un requisito de Windows 11 24H2.

Para cifrar todo el tráfico (útil en segmentos de red no confiables o al tunelizar a través de una VPN):

ini
[global]
   smb encrypt = required

O por recurso, solo para datos sensibles:

ini
[secure-docs]
   path = /srv/samba/secure
   smb encrypt = required
   valid users = mediauser

En una LAN doméstica típica, la firma por sí sola es suficiente. El cifrado añade carga de CPU. Úsalo cuando la ruta de red no sea de confianza.

Listas de control de acceso (ACL)

bash
# Install ACL support
sudo apt install acl -y

# Set detailed permissions
sudo setfacl -R -m u:john:rwx /srv/samba/media
sudo setfacl -R -m u:mary:r-- /srv/samba/media
sudo setfacl -R -m g:sambausers:rw- /srv/samba/documents

Rendimiento: lo que de verdad importa en 2026

Olvídate del ajuste de búferes

Las guías antiguas recomiendan configurar socket options = SO_RCVBUF=262144 SO_SNDBUF=262144. No lo hagas. La página de manual de Samba lo desaconseja explícitamente. Los kernels Linux modernos gestionan el tamaño de los búferes automáticamente, y los valores manuales grandes pueden reducir el rendimiento. Elimina cualquier línea socket options que encuentres en configuraciones antiguas.

Lo que realmente afecta al rendimiento de Samba:

  1. Cableado gigabit y switch. Si estás en 100Mbps, ningún ajuste de smb.conf ayudará. Este es el cuello de botella en la mayoría de montajes domésticos.
  2. SMB3 Directory Leases (Samba 4.22+, activado por defecto). Los clientes cachean los listados de directorios localmente. Genial para bibliotecas multimedia donde navegas por las mismas carpetas repetidamente.
  3. deadtime = 15. Cierra las conexiones inactivas tras 15 minutos. Libera recursos. Añádelo a [global] si lo quieres.
  4. Opción de montaje noatime. Añádela al sistema de archivos que aloja tus recursos Samba en /etc/fstab para evitar escribir marcas de tiempo de acceso en cada lectura.
  5. io_uring. Las compilaciones de las distribuciones con liburing (Debian, Ubuntu) obtienen E/S asíncrona basada en io_uring en smbd automáticamente.
  6. vfs_aio_ratelimit (Samba 4.24). Útil si tu almacenamiento de respaldo es lento (discos mecánicos, unidades USB). Limita la E/S asíncrona para no saturar el dispositivo.

Paso 4: integración con tu servidor doméstico

Integración con Jellyfin

Para la integración con un servidor multimedia, como uso en mi montaje con el N100:

bash
# Create dedicated media structure
sudo mkdir -p /srv/samba/media/{movies,tvshows,music,photos}

# Set ownership for Jellyfin user
sudo chown -R jellyfin:jellyfin /srv/samba/media
ini
[jellyfin-media]
   comment = Jellyfin Media Library
   path = /srv/samba/media
   valid users = mediauser, jellyfin
   read only = no
   browsable = yes
   force user = jellyfin
   force group = jellyfin
   create mask = 0664
   directory mask = 0775

Integración con copias de seguridad

Combínalo con añadir un nuevo disco a Ubuntu LVM para el almacenamiento de copias de seguridad:

bash
#!/bin/bash
# Backup script using Samba shares
BACKUP_DATE=$(date +%Y%m%d)
rsync -av --delete /home/ /srv/samba/backups/home-backup-$BACKUP_DATE/

Para una estrategia de copias de seguridad más completa, considera autoalojar copias de seguridad con Restic y Rclone.

Acceso desde contenedores Docker

Para contenedores Docker que necesitan acceso a los recursos Samba:

yaml
services:
  filebrowser:
    image: filebrowser/filebrowser
    volumes:
      - /srv/samba:/srv
    ports:
      - "8080:80"

Puedes autoalojar FileBrowser con Docker para tener un gestor de archivos web que funciona junto a Samba.

Propiedad de archivos en contenedores

Cuando los contenedores Docker escriben en los directorios de recursos Samba, los archivos pueden crearse como root (o con el UID del contenedor). Usa force user y force group en la configuración del recurso Samba, o establece el usuario del contenedor con user: "1000:1000" en el archivo compose para que coincida con tu usuario de Samba.

Paso 5: descubrimiento y monitorización

Por qué Windows no ve tu recurso Samba (wsdd2 / WS-Discovery)

Esta es la queja más común tras configurar Samba: abres el Explorador de Windows, haces clic en “Red” y tu servidor no aparece.

La razón: el Windows moderno (10/11) usa WS-Discovery para descubrir dispositivos de red, no el antiguo protocolo de exploración NetBIOS que gestiona el nmbd de Samba. Samba no incluye un servidor WS-Discovery.

Instala wsdd2 para solucionarlo:

Debian 13+

bash
sudo apt install wsdd2 -y
sudo systemctl enable --now wsdd2

Ubuntu 24.04

Ubuntu 24.04 incluye wsdd (versión Python), que puede carecer de una unidad systemd. Instálalo y crea la unidad manualmente:

bash
sudo apt install wsdd -y

# Create systemd unit if missing
sudo nano /etc/systemd/system/wsdd.service
ini
[Unit]
Description=Web Services for Devices (wsdd)
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/wsdd --interface eth0
Restart=on-failure

[Install]
WantedBy=multi-user.target

Sustituye eth0 por el nombre real de tu interfaz (ip link show para encontrarlo).

bash
sudo systemctl daemon-reload
sudo systemctl enable --now wsdd

Verifica:

bash
systemctl status wsdd2    # or wsdd

Abre el Explorador de Windows y después Red. Tu servidor Samba debería aparecer ahora.

Opcional: desactiva NetBIOS por completo

En LAN modernas donde todos los clientes soportan SMB2+, puedes desactivar NetBIOS para reducir la superficie de ataque:

ini
[global]
   smb ports = 445
   disable netbios = yes

Después detén y deshabilita nmbd:

bash
sudo systemctl disable --now nmbd    # Debian/Ubuntu
sudo systemctl disable --now nmb     # RHEL/Fedora

Esto elimina los puertos 137, 138 y 139. Solo queda el puerto 445. Hazlo únicamente si todos tus clientes son Windows 10+, macOS o Linux moderno.

Monitorización con smbstatus, logs y Prometheus

bash
# View active Samba connections
sudo smbstatus

# Detailed connection info
sudo smbstatus -v

# Brief summary
sudo smbstatus -b

# Share access
sudo smbstatus -S

# Locked files
sudo smbstatus -L

# Real-time monitoring
watch -n 2 'sudo smbstatus'

Análisis de logs:

bash
# View Samba logs
sudo tail -f /var/log/samba/log.smbd

# Client-specific logs
sudo tail -f /var/log/samba/192.168.1.101.log

# Search for errors
sudo grep -i error /var/log/samba/*.log

# Systemd journal
journalctl -u smbd -f

Recarga elegante (sin cortar conexiones) frente a reinicio:

bash
sudo systemctl reload smbd     # Graceful, preferred for config changes
sudo systemctl restart smbd    # Drops active connections

Para usuarios de Grafana, Samba 4.23+ incluye smb_prometheus_endpoint, un exportador de métricas Prometheus integrado en el puerto 9922. Consulta la monitorización de servidores y Docker para montar un stack de monitorización completo.

Solución de problemas comunes

Problemas de conexión

Error habitual: acceso denegado

Esto suele ocurrir por problemas de autenticación de usuario o permisos incorrectos.

Pasos de diagnóstico:

  • Verifica que el usuario existe en Samba: sudo pdbedit -L -v
  • Comprueba los permisos del recurso: ls -la /srv/samba/
  • Prueba desde el servidor: smbclient -L localhost -U mediauser
  • Verifica el firewall: sudo ufw status o sudo firewall-cmd --list-all
  • Comprueba errores de configuración: sudo testparm -s
bash
# Reset user password
sudo smbpasswd -x mediauser  # Remove user
sudo smbpasswd -a mediauser  # Re-add user

# Test local connection
smbclient //localhost/media -U mediauser -c 'ls'

Códigos de error de Windows 11 24H2

Error 0xc000a000: STATUS_INVALID_SIGNATURE

Causa: incompatibilidad de firma SMB entre el cliente y el servidor.

Corrección:

  1. Añade server signing = mandatory a la sección [global] de smb.conf
  2. Reinicia Samba
  3. Conéctate por nombre de host (\\HOMESERVER\share) en lugar de por IP
  4. Verifica: Get-SmbClientConfiguration | FL RequireSecuritySignature en el cliente Windows
Error 0x80070035: no se encuentra la ruta de red

Causa: el cliente no consigue alcanzar el servidor en absoluto.

Corrección:

  1. Comprueba el firewall en el servidor Samba: sudo ufw status
  2. Verifica que Samba está escuchando: ss -tlnp | grep 445
  3. Haz ping al servidor desde el cliente Windows
  4. Si usas el nombre de host, comprueba que wsdd2 está en ejecución o añade la IP del servidor al archivo hosts de Windows
Las políticas de seguridad bloquean el acceso de invitado no autenticado

Causa: Windows 11 24H2 Pro/Enterprise/Education bloquea el inicio de sesión de invitado no seguro.

Corrección:

  1. Crea un usuario Samba real: sudo smbpasswd -a username
  2. Elimina guest ok = yes del recurso (o crea un recurso separado autenticado)
  3. Conéctate con credenciales: net use Z: \\HOMESERVER\share /user:username

Velocidades de transferencia lentas

  1. Comprueba la velocidad del enlace de red:

    bash
    ethtool eth0 | grep Speed

    Si muestra 100Mb/s, ese es tu cuello de botella; revisa cables y switch.

  2. Prueba el rendimiento bruto de la red:

    bash
    # On server
    iperf3 -s
    # On client
    iperf3 -c 192.168.1.100
  3. Comprueba la E/S de disco:

    bash
    sudo iotop -o
  4. Elimina cualquier socket options heredada de smb.conf. Estas opciones perjudican más que ayudan en kernels modernos.

Depuración de permisos

bash
# Check effective permissions
sudo smbcacls //localhost/media /path/to/file -U mediauser

# Check ACLs
getfacl /srv/samba/media

# Reset permissions
sudo chmod -R 755 /srv/samba/
sudo chown -R mediauser:mediauser /srv/samba/media

Buenas prácticas de seguridad y parcheo de Samba

Mantén Samba parcheado

CVE-2025-10230: RCE con CVSS 10.0 en Samba

En octubre de 2025 se parcheó una vulnerabilidad crítica (CVE-2025-10230) en Samba. Permitía ejecución remota de código sin autenticación a través del hook de WINS en controladores de dominio AD. CVSS 10.0. Afectadas: todas las versiones desde la 4.0 al ejecutarse como controlador de dominio con wins support = yes y un wins hook configurado. Los servidores standalone y miembros no están afectados. Corregido en 4.23.2, 4.22.5 y 4.21.9. Si ejecutas Samba como AD DC y no lo has actualizado desde mediados de 2025, hazlo ahora.

Publicaciones de seguridad de Samba del último año:

  • 15 oct 2025: CVE-2025-10230 (CVSS 10.0), CVE-2025-9640
  • 26 may 2026: 6 CVE parcheados
  • 28 jul 2026: 6 CVE parcheados

Pasos prácticos:

bash
# Check your version
smbd --version

# Update Samba
sudo apt update && sudo apt upgrade -y    # Debian/Ubuntu
sudo dnf upgrade samba -y                 # RHEL/Fedora

# Check for deprecation warnings after update
sudo testparm -s
journalctl -u smbd -b --priority=err

Suscríbete a los anuncios de seguridad de Samba en https://www.samba.org/samba/history/security.html.

Lista de verificación de seguridad de red

  • Usa contraseñas fuertes para todos los usuarios de Samba
  • Limita el acceso por rango de IP: hosts allow = 192.168.1.0/24
  • Desactiva el acceso de invitado salvo que sea necesario
  • Usa smb encrypt = required para datos sensibles en redes no confiables
  • Nunca expongas el puerto 445 a Internet público
  • Usa una VPN para el acceso remoto (consulta cómo proteger un servidor Linux con CrowdSec)
  • Mantén Samba actualizado y revísalo como mínimo cada trimestre
ini
[secure-share]
   path = /srv/samba/secure
   hosts allow = 192.168.1.0/24
   hosts deny = ALL
   smb encrypt = required
   valid users = mediauser

Copia de seguridad y restauración

Copia de seguridad de la configuración

Haz siempre una copia de seguridad de tu configuración de Samba antes de hacer cambios. La configuración y la base de datos de usuarios son críticas para mantener el acceso.

bash
# Backup Samba configuration
sudo cp /etc/samba/smb.conf /backup/smb.conf.$(date +%Y%m%d)

# Backup user database
sudo cp -r /var/lib/samba /backup/samba-users.$(date +%Y%m%d)

Restauración:

bash
#!/bin/bash
# restore-samba.sh
sudo cp /backup/smb.conf.YYYYMMDD /etc/samba/smb.conf
sudo cp -r /backup/samba-users.YYYYMMDD/* /var/lib/samba/
sudo systemctl restart smbd nmbd    # Debian/Ubuntu
# sudo systemctl restart smb nmb   # RHEL/Fedora

Conclusión

Samba en Linux te da compartición de archivos multiplataforma para entornos mixtos. Requiere más configuración que NFS, pero la compatibilidad universal compensa en redes con Windows, macOS y dispositivos móviles.

En mi mini PC N100, ejecutar NFS y Samba a la vez es lo que mejor funciona. NFS gestiona las transferencias entre sistemas Linux con velocidad, mientras Samba cubre todo lo demás. En 2026, lo principal que hay que hacer bien: habilitar server signing = mandatory para la compatibilidad con Windows 11 24H2, instalar wsdd2 para que Windows pueda descubrir tus recursos y mantener Samba parcheado.

Para más sobre servidores domésticos, consulta mis guías sobre los mejores mini PC para servidores domésticos y la monitorización de servidores. Si necesitas un VPS remoto para replicación externa o un endpoint de WireGuard, un VPS de Hetzner Cloud funciona bien para eso.

Los precios de los VPS subieron en 2026 en todos los proveedores. Si estás replanteándote un servidor alquilado, mira qué cambió y cuándo gana un mini PC.

Empieza tu configuración de Samba