---
title: "Configurar Samba en Linux: guía completa para una unidad compartida"
description: "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."
date: 2025-07-29
categories: ["linux"]
tags: ["home-server","file-sharing","samba"]
---

import Button from "@components/widgets/Button.astro";
import Notice from "@components/widgets/Notice.astro";
import ListCheck from "@components/widgets/ListCheck.astro";
import Accordion from "@components/widgets/Accordion.astro";
import Tabs from "@components/widgets/Tabs.astro";
import Tab from "@components/widgets/Tab.astro";

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](https://www.bitdoze.com/setup-nfs-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.

<Notice type="info" title="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.
</Notice>

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](/go/gmktec-m5-ultra/) es una buena opción compacta para este tipo de servidor doméstico siempre encendido.

## Entendiendo SMB, CIFS y Samba

<Notice type="info" title="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.
</Notice>

### ¿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

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

### 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](https://www.bitdoze.com/setup-webdav-nginx/) es otra opción que vale la pena considerar.

## Requisitos previos y planificación

Antes de configurar Samba, asegúrate de tener:

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

<Notice type="error" title="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](/es/netbird-vs-headscale-vs-tailscale/) o [autoaloja un servidor de control de Tailscale](/es/headscale-tailscale-autoalojado/) para ver opciones.
</Notice>

### 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](/go/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](/go/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](/best-nas-homelab-docker-proxmox/#drives-to-buy-with-it) | 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](/go/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](/es/mejores-nas-homelab-docker-proxmox/#la-opción-diy-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` |

<Notice type="info" title="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 <a href="#buenas-prácticas-de-seguridad-y-parcheo-de-samba">Seguridad y parcheo</a> más abajo.
</Notice>

### 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](@assets/images/25/07/smb-network.svg)

## 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

<Tabs>
<Tab name="Debian / Ubuntu">
```bash
sudo apt update && sudo apt install samba samba-common-bin -y
```
</Tab>
<Tab name="RHEL / Fedora">
```bash
sudo dnf install samba samba-client samba-common -y
```
</Tab>
</Tabs>

### 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
```

<Notice type="warning" title="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.
</Notice>

### 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
```

<Notice type="info" title="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.
</Notice>

### 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
```

<Notice type="warning" title="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 <a href="#explorador-de-archivos-y-cliente-smb-de-windows-11--10-incl-correcciones-de-24h2">sección de Windows 11 24H2</a> para la corrección.
</Notice>

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:

<Tabs>
<Tab name="Debian / Ubuntu">
```bash
sudo systemctl enable --now smbd nmbd
sudo systemctl status smbd nmbd
```
</Tab>
<Tab name="RHEL / Fedora">
```bash
sudo systemctl enable --now smb nmb
sudo systemctl status smb nmb
```
</Tab>
</Tabs>

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

<Tabs>
<Tab name="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.
</Tab>
<Tab name="firewalld (RHEL / Fedora)">
```bash
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
```
</Tab>
</Tabs>

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

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

```fstab
//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

<Notice type="warning" title="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.
</Notice>

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
```

<Accordion label="Corrección: Windows 11 24H2 no consigue conectarse a Samba" group="troubleshooting">

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

</Accordion>

### 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

<Notice type="info" title="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.
</Notice>

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](https://www.bitdoze.com/add-new-drive-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](/es/pluton-backup-autoalojado/).

### Acceso desde contenedores Docker

Para [contenedores Docker](/es/contenedores-docker-servidor-casa/) 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](https://www.bitdoze.com/deploy-filebrowser-docker/) para tener un gestor de archivos web que funciona junto a Samba.

<Notice type="warning" title="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.
</Notice>

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

<Tabs>
<Tab name="Debian 13+">
```bash
sudo apt install wsdd2 -y
sudo systemctl enable --now wsdd2
```
</Tab>
<Tab name="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
```
</Tab>
</Tabs>

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](https://www.bitdoze.com/sever-monitoring/) para montar un stack de monitorización completo.

## Solución de problemas comunes

### Problemas de conexión

<Notice type="error" title="Error habitual: acceso denegado">
Esto suele ocurrir por problemas de autenticación de usuario o permisos incorrectos.
</Notice>

**Pasos de diagnóstico:**

<ListCheck>
<ul>
<li>Verifica que el usuario existe en Samba: `sudo pdbedit -L -v`</li>
<li>Comprueba los permisos del recurso: `ls -la /srv/samba/`</li>
<li>Prueba desde el servidor: `smbclient -L localhost -U mediauser`</li>
<li>Verifica el firewall: `sudo ufw status` o `sudo firewall-cmd --list-all`</li>
<li>Comprueba errores de configuración: `sudo testparm -s`</li>
</ul>
</ListCheck>

```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

<Accordion label="Error 0xc000a000: STATUS_INVALID_SIGNATURE" group="errors">

**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

</Accordion>

<Accordion label="Error 0x80070035: no se encuentra la ruta de red" group="errors">

**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

</Accordion>

<Accordion label="Las políticas de seguridad bloquean el acceso de invitado no autenticado" group="errors">

**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`

</Accordion>

### 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

<Notice type="error" title="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.
</Notice>

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

<ListCheck>
<ul>
<li>Usa contraseñas fuertes para todos los usuarios de Samba</li>
<li>Limita el acceso por rango de IP: `hosts allow = 192.168.1.0/24`</li>
<li>Desactiva el acceso de invitado salvo que sea necesario</li>
<li>Usa `smb encrypt = required` para datos sensibles en redes no confiables</li>
<li>Nunca expongas el puerto 445 a Internet público</li>
<li>Usa una VPN para el acceso remoto (consulta [cómo proteger un servidor Linux con CrowdSec](https://www.bitdoze.com/crowdsec-secure-server/))</li>
<li>Mantén Samba actualizado y revísalo como mínimo cada trimestre</li>
</ul>
</ListCheck>

```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

<Notice type="warning" title="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.
</Notice>

```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](https://www.bitdoze.com/setup-nfs-linux/), 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](https://www.bitdoze.com/best-mini-pc-home-server/) y la [monitorización de servidores](https://www.bitdoze.com/sever-monitoring/). Si necesitas un VPS remoto para replicación externa o un endpoint de WireGuard, un [VPS de Hetzner Cloud](https://go.bitdoze.com/hetzner) 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](/es/subidas-precios-vps/)._

<Button text="Empieza tu configuración de Samba" size="lg" color="blue" variant="solid" />