Servidor de Archivos con Samba: Guía Completa de Configuración

Introducción

El intercambio de archivos sigue siendo un requisito fundamental para empresas, organizaciones y redes domésticas. Samba, la implementación de código abierto del protocolo SMB/CIFS, permite que los servidores Linux compartan archivos sin problemas con clientes Windows, macOS y Linux, convirtiéndolo en el estándar de facto para compartir archivos multiplataforma en entornos de red heterogéneos.

Desarrollado originalmente por Andrew Tridgell en 1992 mediante ingeniería inversa del protocolo SMB de Microsoft, Samba ha evolucionado hasta convertirse en una solución de servidor de archivos madura y rica en características, desplegada en millones de organizaciones en todo el mundo. Desde pequeñas redes domésticas hasta empresas Fortune 500, Samba proporciona intercambio de archivos confiable, seguro y de alto rendimiento con integración de Active Directory, permisos avanzados y opciones completas de autenticación.

Esta guía completa te guía a través del despliegue de un servidor de archivos Samba listo para producción en Linux. Aprenderás procedimientos de instalación, configuración de recursos compartidos, autenticación de usuarios, gestión de permisos, integración de Active Directory, optimización de rendimiento, endurecimiento de seguridad, estrategias de respaldo y técnicas de solución de problemas.

Ya sea que estés creando un servidor de archivos departamental, reemplazando costosos servidores de archivos Windows, construyendo un servidor multimedia doméstico, implementando un repositorio centralizado de documentos o integrando almacenamiento de archivos Linux con dominios Windows, esta guía proporciona todo lo necesario para el despliegue profesional de Samba.

Resumen de Casos de Uso

¿Por Qué Desplegar un Servidor de Archivos Samba?

Los servidores de archivos Samba proporcionan ventajas significativas para organizaciones e individuos:

Compatibilidad Multiplataforma: Comparte archivos sin problemas entre sistemas Windows, macOS y Linux usando protocolos nativos. Los usuarios acceden a archivos a través del familiar Entorno de Red de Windows o Finder de macOS sin software adicional.

Alternativa Rentable: Reemplaza costosas licencias de Windows Server y CALs con Linux y Samba de código abierto, reduciendo drásticamente los costos de licencia mientras se mantiene la funcionalidad completa.

Almacenamiento Centralizado: Consolida archivos en una ubicación central, simplificando respaldos, asegurando control de versiones, habilitando colaboración y previniendo la fragmentación de datos en dispositivos personales.

Permisos Avanzados: Implementa controles de acceso granulares combinando permisos UNIX y ACLs de Windows, controlando acceso de lectura, escritura y ejecución a nivel de usuario y grupo.

Integración con Active Directory: Une servidores Samba a dominios de Active Directory existentes, aprovechando cuentas de usuario y políticas de grupo existentes para gestión unificada de identidades.

Alto Rendimiento: Con el ajuste adecuado, Samba logra rendimiento cercano a la velocidad de línea, soportando cientos de usuarios simultáneos y rendimiento de red multi-gigabit.

Capacidades de Servidor de Impresión: Más allá del intercambio de archivos, Samba proporciona funcionalidad de servidor de impresión en red, centralizando la gestión de impresoras para clientes Windows.

Funcionalidad de Papelera de Reciclaje: Implementa recuperación de archivos a través de la característica de papelera de reciclaje de Samba, protegiendo contra eliminaciones accidentales sin requerir restauración de respaldo.

Auditoría y Registro: El registro completo rastrea acceso, modificaciones y eliminaciones de archivos para análisis de seguridad, cumplimiento y monitoreo de actividad de usuarios.

Escenarios Comunes de Despliegue

Servidor de Archivos para Pequeñas Empresas: Repositorio central para documentos de empresa, hojas de cálculo y recursos compartidos con autenticación de usuario y controles de permisos.

Recursos Compartidos Departamentales: Recursos compartidos dedicados para diferentes departamentos (Contabilidad, RRHH, Ingeniería) con control de acceso basado en roles y gestión de cuotas.

Servidor Multimedia Doméstico: Servidor de archivos personal almacenando fotos, videos y música accesible desde computadoras, televisores inteligentes y reproductores multimedia en toda la red doméstica.

Colaboración de Equipo de Desarrollo: Bases de código compartidas, documentación y archivos de proyecto para equipos de desarrollo de software con respaldos controlados por versiones.

Almacenamiento de Institución Educativa: Directorios home de estudiantes, materiales de curso compartidos y espacios de proyecto colaborativo para escuelas y universidades.

Intercambio de Archivos de Agencia Creativa: Almacenamiento de alta capacidad para diseñadores gráficos, editores de video y fotógrafos compartiendo archivos multimedia grandes dentro de estudios.

Repositorio de Respaldo: Almacenamiento conectado a red sirviendo como destino de respaldo para estaciones de trabajo, servidores y sistemas críticos.

Infraestructura de Escritorio Virtual (VDI): Almacenamiento de perfiles de usuario y repositorios de aplicaciones para entornos de escritorio virtualizados.

Capacidades Técnicas

Un servidor de archivos Samba correctamente configurado proporciona:

  • Soporte de Protocolo SMB/CIFS: Versiones de protocolo SMB1, SMB2 y SMB3 con cifrado
  • Acceso Multi-Usuario: Acceso simultáneo por cientos de usuarios con persistencia de conexión
  • Opciones de Autenticación: Autenticación de usuarios locales, LDAP, Active Directory o Kerberos
  • Modelos de Permisos: Permisos UNIX, ACLs POSIX y ACLs estilo Windows
  • Tipos de Recursos Compartidos: Recursos compartidos de archivos estándar, directorios home, recursos compartidos de impresión y recursos compartidos administrativos ocultos
  • Bloqueo de Archivos: Bloqueo oportunista y bloqueo estricto previniendo corrupción de datos
  • Gestión de Cuotas: Aplicación de cuotas de disco por usuario y por recurso compartido
  • Papelera de Reciclaje: Protección de eliminación suave con políticas de retención configurables
  • Auditoría: Registro completo de acceso y modificación
  • Alta Disponibilidad: Soporte de clustering y failover para despliegues críticos

Requisitos

Requisitos del Sistema

Requisitos Mínimos (Hogar/Pequeña Oficina, 5-10 usuarios):

  • CPU: 2 núcleos a 2.0+ GHz
  • RAM: 2GB
  • Almacenamiento: Depende de necesidades de almacenamiento (mínimo 100GB)
  • Red: Ethernet 1 Gbps
  • SO: Ubuntu 20.04/22.04, Debian 11/12, CentOS 8, Rocky Linux 8/9

Requisitos Recomendados (Empresa Media, 25-100 usuarios):

  • CPU: 4 núcleos a 2.5+ GHz
  • RAM: 8GB
  • Almacenamiento: 1TB+ (RAID recomendado para redundancia)
  • Red: Ethernet 1 Gbps (múltiples interfaces para bonding)
  • SO: Ubuntu 22.04 LTS

Requisitos de Alto Rendimiento (Empresa, 200+ usuarios):

  • CPU: 8+ núcleos a 3.0+ GHz
  • RAM: 16-32GB
  • Almacenamiento: 10TB+ con RAID 6 o RAID 10, nivel de caché SSD
  • Red: Ethernet 10 Gbps o múltiples interfaces bonding 1 Gbps
  • SO: Ubuntu 22.04 LTS con ajuste de kernel

Consideraciones de Almacenamiento

Planificación de Capacidad de Almacenamiento:

  • Oficina pequeña: 100GB-1TB
  • Empresa media: 1TB-10TB
  • Empresa: 10TB-100TB+

Rendimiento de Almacenamiento:

  • RAID HDD: Estándar para la mayoría de despliegues, equilibrio de capacidad y costo
  • SSD: Ideal para aplicaciones críticas de rendimiento o bases de datos
  • Híbrido: HDD para almacenamiento masivo con nivel de caché SSD para datos calientes
  • Dispositivos NAS: Soluciones pre-construidas con arrays de almacenamiento optimizados

Recomendaciones de RAID:

  • RAID 1: Espejo para configuraciones de 2 discos (100% redundancia, 50% capacidad)
  • RAID 5: Striping con paridad (tolerancia a falla de 1 disco, buen rendimiento)
  • RAID 6: Paridad dual (tolerancia a falla de 2 discos, mejor confiabilidad)
  • RAID 10: Stripes espejados (mejor rendimiento, 50% capacidad)

Requisitos de Red

Velocidad de Red: Mínimo 1 Gbps recomendado para servidores de archivos modernos. 10 Gbps ideal para grandes despliegues o entornos de producción multimedia.

Requisitos de Switch: Switches gestionados soportando VLANs, agregación de enlaces (LACP) y tramas jumbo para rendimiento óptimo.

Configuración de Puerto: Samba usa múltiples puertos:

  • 139/TCP: Servicio de Sesión NetBIOS (legacy)
  • 445/TCP: Microsoft-DS (SMB moderno)
  • 137/UDP: Servicio de Nombres NetBIOS (legacy)
  • 138/UDP: Servicio de Datagramas NetBIOS (legacy)

Los despliegues modernos usan principalmente puerto 445/TCP.

Requisitos de Software

Versión de Samba: Samba 4.x recomendado (soporte Active Directory, SMB3).

Sistema de Archivos: ext4, XFS o Btrfs con soporte ACL habilitado.

Componentes Opcionales:

  • winbind: Integración con Active Directory
  • samba-vfs-modules: Funcionalidad extendida (papelera de reciclaje, auditoría)
  • samba-tool: Utilidades de gestión de dominio
  • smbclient: Utilidades de prueba y cliente

Conocimientos Previos

  • Fundamentos de administración de sistemas Linux
  • Conceptos de gestión de usuarios y grupos
  • Comprensión de permisos y propiedad de archivos
  • Conocimiento básico de redes
  • Familiaridad con compartir archivos de Windows

Configuración Paso a Paso

Paso 1: Preparación del Sistema

Actualizar paquetes del sistema:

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/Rocky Linux
sudo dnf update -y

Paso 2: Instalar Samba

Ubuntu/Debian:

sudo apt install samba samba-common-bin smbclient cifs-utils -y

CentOS/Rocky Linux:

sudo dnf install samba samba-client cifs-utils -y

Verificar instalación:

smbd --version

Debería mostrar la versión de Samba (4.x).

Paso 3: Respaldar Configuración Predeterminada

Crear respaldo de configuración original:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original

Paso 4: Crear Configuración Básica de Samba

Crear nueva configuración simplificada:

sudo nano /etc/samba/smb.conf

Agregar la siguiente configuración básica:

[global]
   workgroup = WORKGROUP
   server string = Samba File Server
   netbios name = fileserver
   security = user
   map to guest = never
   dns proxy = no

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

   # Performance tuning
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
   read raw = yes
   write raw = yes
   max xmit = 65535
   dead time = 15
   getwd cache = yes

   # SMB protocol versions
   server min protocol = SMB2
   server max protocol = SMB3

   # File system settings
   unix extensions = no
   wide links = no

# Example public share (read-only for everyone)
[Public]
   path = /srv/samba/public
   browseable = yes
   read only = yes
   guest ok = yes
   create mask = 0644
   directory mask = 0755

# Example private share (authentication required)
[Private]
   path = /srv/samba/private
   browseable = yes
   read only = no
   valid users = @users
   create mask = 0660
   directory mask = 0770
   force group = users

Guardar y salir.

Desglose de Configuración:

  • workgroup: Nombre de grupo de trabajo/dominio de Windows
  • server string: Descripción mostrada en listas de navegación de red
  • security = user: Requiere autenticación de nombre de usuario/contraseña
  • path: Directorio del sistema de archivos a compartir
  • browseable: Mostrar recurso compartido en listas de navegación de red
  • read only: no = escribible, yes = solo lectura
  • valid users: Quién puede acceder (@grupo o nombre de usuario)
  • create mask: Permisos para archivos nuevos
  • directory mask: Permisos para directorios nuevos

Paso 5: Crear Directorios de Recursos Compartidos

Crear directorios para recursos compartidos:

sudo mkdir -p /srv/samba/public
sudo mkdir -p /srv/samba/private

Establecer propiedad y permisos:

# Public share (readable by all)
sudo chown -R nobody:nogroup /srv/samba/public
sudo chmod 755 /srv/samba/public

# Private share (owned by users group)
sudo chown -R root:users /srv/samba/private
sudo chmod 770 /srv/samba/private

Paso 6: Crear Usuarios de Samba

Crear usuarios Linux primero:

sudo useradd -m -s /bin/bash john
sudo useradd -m -s /bin/bash sarah

Agregar usuarios a base de datos de Samba con contraseñas:

sudo smbpasswd -a john
sudo smbpasswd -a sarah

Ingresar y confirmar contraseñas cuando se solicite.

Habilitar usuarios:

sudo smbpasswd -e john
sudo smbpasswd -e sarah

Listar usuarios de Samba:

sudo pdbedit -L -v

Paso 7: Probar Configuración

Verificar sintaxis de configuración:

testparm

Debería mostrar "Loaded services file OK" y mostrar la configuración.

Paso 8: Iniciar y Habilitar Samba

Habilitar servicios de Samba:

# Ubuntu/Debian
sudo systemctl enable smbd nmbd
sudo systemctl start smbd nmbd

# CentOS/Rocky
sudo systemctl enable smb nmb
sudo systemctl start smb nmb

Verificar estado:

# Ubuntu/Debian
sudo systemctl status smbd nmbd

# CentOS/Rocky
sudo systemctl status smb nmb

Paso 9: Configurar Firewall

Permitir Samba a través del firewall:

# UFW (Ubuntu/Debian)
sudo ufw allow Samba

# Firewalld (CentOS/Rocky)
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

Paso 10: Probar desde Cliente

Cliente Windows:

  1. Abrir Explorador de Archivos
  2. Escribir en barra de direcciones: \\FILESERVER_IP\Public
  3. Presionar Enter
  4. Para recurso compartido privado: \\FILESERVER_IP\Private
  5. Ingresar nombre de usuario y contraseña

Cliente macOS:

  1. Abrir Finder
  2. Presionar Cmd+K
  3. Ingresar: smb://FILESERVER_IP/Public
  4. Hacer clic en Conectar

Cliente Linux:

# Install cifs-utils if not already installed
sudo apt install cifs-utils -y

# List shares
smbclient -L //FILESERVER_IP -U john

# Connect to share
smbclient //FILESERVER_IP/Private -U john

Montar permanentemente:

sudo mkdir /mnt/private
sudo mount -t cifs //FILESERVER_IP/Private /mnt/private -o username=john,password=secret

Configuración

Directorios Home de Usuario

Crear directorios home individuales para cada usuario:

Agregar a smb.conf:

[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

Los usuarios acceden vía \\FILESERVER\username.

Recursos Compartidos Departamentales

Crear recursos compartidos específicos de departamento con permisos de grupo:

Crear grupos y usuarios:

sudo groupadd accounting
sudo groupadd engineering
sudo groupadd management

sudo usermod -aG accounting john
sudo usermod -aG engineering sarah

Crear directorios de recursos compartidos:

sudo mkdir -p /srv/samba/departments/{accounting,engineering,management}

sudo chown root:accounting /srv/samba/departments/accounting
sudo chown root:engineering /srv/samba/departments/engineering
sudo chown root:management /srv/samba/departments/management

sudo chmod 2770 /srv/samba/departments/*

El 2770 establece el bit setgid (2) asegurando que los archivos nuevos hereden la propiedad del grupo.

Agregar recursos compartidos a smb.conf:

[Accounting]
   path = /srv/samba/departments/accounting
   browseable = yes
   read only = no
   valid users = @accounting
   force group = accounting
   create mask = 0660
   directory mask = 0770

[Engineering]
   path = /srv/samba/departments/engineering
   browseable = yes
   read only = no
   valid users = @engineering
   force group = engineering
   create mask = 0660
   directory mask = 0770

[Management]
   path = /srv/samba/departments/management
   browseable = yes
   read only = no
   valid users = @management
   force group = management
   create mask = 0660
   directory mask = 0770

Recargar Samba:

sudo smbcontrol all reload-config

Configuración de Papelera de Reciclaje

Implementar papelera de reciclaje para recuperar archivos eliminados accidentalmente:

Agregar a configuración de recurso compartido:

[Engineering]
   path = /srv/samba/departments/engineering
   browseable = yes
   read only = no
   valid users = @engineering

   # Recycle bin configuration
   vfs objects = recycle
   recycle:repository = .recycle/%U
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:touch = yes
   recycle:exclude = *.tmp, *.temp, *.o, *.obj, ~$*
   recycle:exclude_dir = /tmp, /cache
   recycle:maxsize = 0

Parámetros Explicados:

  • recycle:repository: Ubicación de papelera de reciclaje (%U = nombre de usuario)
  • recycle:keeptree: Preservar estructura de directorio
  • recycle:versions: Mantener múltiples versiones del mismo archivo
  • recycle:touch: Actualizar marca de tiempo en eliminación
  • recycle:exclude: Patrones de archivo a omitir reciclaje
  • recycle:maxsize: Tamaño máximo de archivo a reciclar (0 = ilimitado)

Registro de Auditoría

Habilitar auditoría completa:

[Engineering]
   path = /srv/samba/departments/engineering
   browseable = yes
   read only = no
   valid users = @engineering

   # Audit logging
   vfs objects = full_audit
   full_audit:prefix = %u|%I|%m|%S
   full_audit:success = mkdir rmdir read write rename unlink
   full_audit:failure = all
   full_audit:facility = local5
   full_audit:priority = notice

Ver registros de auditoría:

sudo tail -f /var/log/syslog | grep smbd_audit

Recursos Compartidos de Solo Lectura con Dropbox de Carga

Crear recurso compartido donde los usuarios puedan cargar pero no leer archivos de otros:

[Dropbox]
   path = /srv/samba/dropbox
   browseable = yes
   read only = no
   valid users = @users
   create mask = 0600
   directory mask = 0700

   # Write-only configuration
   write list = @users
   force user = dropbox
   force create mode = 0600
   hide unreadable = yes

Crear usuario y directorio dropbox:

sudo useradd -r -s /bin/false dropbox
sudo mkdir /srv/samba/dropbox
sudo chown dropbox:users /srv/samba/dropbox
sudo chmod 1770 /srv/samba/dropbox

El sticky bit (1) asegura que los usuarios solo puedan eliminar sus propios archivos.

Cuotas de Disco

Implementar cuotas de disco por usuario:

Habilitar cuotas en sistema de archivos:

# Edit /etc/fstab, add usrquota,grpquota to options
sudo nano /etc/fstab

Encontrar línea para tu partición Samba y modificar:

/dev/sdb1 /srv/samba ext4 defaults,usrquota,grpquota 0 2

Remontar sistema de archivos:

sudo mount -o remount /srv/samba

Inicializar base de datos de cuotas:

sudo quotacheck -cum /srv/samba
sudo quotaon -v /srv/samba

Establecer cuota para usuario:

# Set 10GB soft limit, 12GB hard limit for john
sudo setquota -u john 10000000 12000000 0 0 /srv/samba

Verificar uso de cuota:

sudo quota -vs john

Soporte de ACL de Windows

Habilitar ACLs estilo Windows para permisos granulares:

Instalar soporte ACL:

sudo apt install acl attr -y

Montar sistema de archivos con soporte ACL (agregar a /etc/fstab):

/dev/sdb1 /srv/samba ext4 defaults,acl 0 2

Remontar:

sudo mount -o remount /srv/samba

Configurar Samba para ACLs de Windows:

[Engineering]
   path = /srv/samba/departments/engineering
   read only = no
   valid users = @engineering

   # Windows ACL support
   vfs objects = acl_xattr
   map acl inherit = yes
   store dos attributes = yes

Establecer permisos desde Windows:

  1. Clic derecho en carpeta/archivo
  2. Propiedades → Seguridad
  3. Configurar permisos según necesidad

Optimización

Ajuste de Rendimiento

Optimización de Buffer de Socket

[global]
   # Increase socket buffers
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=524288 SO_SNDBUF=524288

   # Increase max transfer size
   max xmit = 65535

   # Enable async I/O
   aio read size = 16384
   aio write size = 16384

   # Read and write optimizations
   read raw = yes
   write raw = yes

   # Cache optimizations
   getwd cache = yes
   kernel oplocks = yes
   level2 oplocks = yes

Multi-Canal SMB3

Habilitar multi-canal SMB3 para mayor rendimiento:

[global]
   server multi channel support = yes

   # Bind to specific interfaces
   interfaces = 192.168.1.100/24 192.168.2.100/24
   bind interfaces only = yes

Requiere múltiples interfaces de red.

Oplocks y Caché

[Engineering]
   path = /srv/samba/departments/engineering

   # Enable oplocks for better performance
   oplocks = yes
   level2 oplocks = yes
   kernel oplocks = yes

   # Strict locking for data integrity (disable for performance)
   strict locking = auto

Nota: Deshabilitar oplocks para archivos de base de datos para prevenir corrupción.

Ajuste de Parámetros del Kernel

Optimizar kernel de Linux para rendimiento de servidor de archivos:

sudo nano /etc/sysctl.conf

Agregar:

# Increase file handles
fs.file-max = 2097152

# Increase network buffers
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

# Optimize connection handling
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 8192

# Faster file system access
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
vm.vfs_cache_pressure = 50

Aplicar cambios:

sudo sysctl -p

Optimización de Almacenamiento

Usar XFS para Archivos Grandes

XFS funciona mejor que ext4 para archivos grandes y alta concurrencia:

# Format partition with XFS
sudo mkfs.xfs -L samba-data /dev/sdb1

# Mount with optimal options
sudo mount -o noatime,nodiratime,logbsize=256k /dev/sdb1 /srv/samba

Agregar a /etc/fstab:

/dev/sdb1 /srv/samba xfs defaults,noatime,nodiratime,logbsize=256k 0 2

Optimización SSD

Para almacenamiento basado en SSD:

# Mount with SSD-optimized options
sudo mount -o noatime,nodiratime,discard /dev/sdb1 /srv/samba

Balanceo de Carga

Distribuir carga a través de múltiples servidores Samba usando DNS round-robin o balanceador de carga:

DNS Round-Robin:

Crear múltiples registros A para mismo hostname:

fileserver.local. IN A 192.168.1.10
fileserver.local. IN A 192.168.1.11
fileserver.local. IN A 192.168.1.12

Los clientes conectando a fileserver.local serán distribuidos a través de servidores.

DFS (Sistema de Archivos Distribuidos):

Configurar Samba con soporte DFS:

[global]
   host msdfs = yes

[dfs_root]
   path = /srv/samba/dfs
   msdfs root = yes

Crear enlaces DFS:

sudo mkdir -p /srv/samba/dfs
cd /srv/samba/dfs
sudo ln -s msdfs:server1\\share1,server2\\share1 share1

Solución de Problemas

No Se Puede Conectar a Recursos Compartidos

Verificar que Samba esté ejecutándose:

sudo systemctl status smbd nmbd

Verificar firewall:

# Test port 445
telnet FILESERVER_IP 445

Verificar que recurso compartido existe:

testparm -s

Debería listar todos los recursos compartidos.

Probar desde servidor localmente:

smbclient -L localhost -U username

Si funciona localmente pero no remotamente, problema de firewall.

Verificar SELinux (CentOS/Rocky):

sudo getsebool -a | grep samba

Permitir directorios home de Samba:

sudo setsebool -P samba_enable_home_dirs on

Errores de Permiso Denegado

Verificar permisos de archivos Linux:

ls -la /srv/samba/private

Asegurar que el usuario tiene acceso de lectura/escritura.

Verificar que usuario de Samba existe:

sudo pdbedit -L

Verificar configuración de recurso compartido:

testparm -s --section-name=ShareName

Forzar permisos:

[Share]
   force user = root
   force group = users
   create mask = 0660
   directory mask = 0770

Fallas de Autenticación

Restablecer contraseña de Samba:

sudo smbpasswd -a username

Habilitar usuario:

sudo smbpasswd -e username

Verificar que usuario está en valid_users:

Verificar configuración de recurso compartido smb.conf:

valid_users = @groupname username

Limpiar credenciales de Windows (cliente Windows):

net use * /delete

Luego reconectar con credenciales correctas.

Rendimiento Lento

Verificar velocidad de red:

iperf3 -s  # On server
iperf3 -c SERVER_IP  # On client

Monitorear procesos de Samba:

sudo smbstatus

Verificar I/O de disco:

sudo iotop

Alto iowait indica cuello de botella de disco.

Verificar oplocks habilitados:

testparm -sv | grep oplock

Aumentar tamaños de buffer en smb.conf (ver sección Optimización).

Problemas de Bloqueo de Archivos

Ver archivos bloqueados:

sudo smbstatus -L

Desbloquear archivo específico:

Obtener PID de smbstatus, luego:

sudo kill -HUP PID

Deshabilitar bloqueo estricto (usar con precaución):

strict locking = no

Endurecimiento de Seguridad

Deshabilitar Protocolo SMB1

SMB1 tiene vulnerabilidades conocidas:

[global]
   server min protocol = SMB2
   server max protocol = SMB3

Habilitar Cifrado SMB

Forzar cifrado para recursos compartidos sensibles:

[Finance]
   path = /srv/samba/finance
   smb encrypt = required

Restringir Acceso de Red

Limitar acceso a redes específicas:

[global]
   hosts allow = 192.168.1.0/24 10.0.0.0/8
   hosts deny = 0.0.0.0/0

O por recurso compartido:

[Engineering]
   hosts allow = 192.168.10.0/24

Implementar Contraseñas Fuertes

Aplicar complejidad de contraseñas (requiere pam_pwquality):

sudo nano /etc/pam.d/common-password

Agregar:

password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1

Auditorías de Seguridad Regulares

Monitorear registros para actividad sospechosa:

sudo tail -f /var/log/samba/log.smbd | grep -i "failed\|denied\|error"

Revisar usuarios conectados:

sudo smbstatus -b

Conclusión

Ahora tienes un servidor de archivos Samba completamente operacional proporcionando intercambio de archivos multiplataforma con autenticación robusta, permisos granulares y características empresariales. Esta solución lista para producción ofrece la flexibilidad y rendimiento necesarios para organizaciones de todos los tamaños.

Logros clave de esta guía:

  • Intercambio de archivos multiplataforma sirviendo sin problemas a clientes Windows, macOS y Linux
  • Control de acceso granular usando permisos UNIX, grupos y ACLs de Windows
  • Características avanzadas incluyendo papeleras de reciclaje, registro de auditoría y cuotas de disco
  • Optimización de rendimiento a través de ajuste, caché y mejoras de protocolo
  • Endurecimiento de seguridad con cifrado, restricciones de acceso y limitaciones de protocolo
  • Arquitectura escalable lista para expansión con balanceo de carga y clustering

El mantenimiento regular incluye monitorear uso de disco, revisar registros de acceso, actualizar permisos de recursos compartidos a medida que cambian las estructuras de equipo y mantener los paquetes de Samba actualizados para parches de seguridad. Implementa respaldos regulares tanto de datos de recursos compartidos como de archivos de configuración de Samba para asegurar recuperación rápida de fallas.

Ya sea reemplazando costosos servidores de archivos Windows, construyendo plataformas de colaboración departamental o creando almacenamiento multimedia personal, Samba proporciona la base para infraestructura profesional de intercambio de archivos.

¡Comparte sabiamente!