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:
- Abrir Explorador de Archivos
- Escribir en barra de direcciones:
\\FILESERVER_IP\Public - Presionar Enter
- Para recurso compartido privado:
\\FILESERVER_IP\Private - Ingresar nombre de usuario y contraseña
Cliente macOS:
- Abrir Finder
- Presionar Cmd+K
- Ingresar:
smb://FILESERVER_IP/Public - 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:
- Clic derecho en carpeta/archivo
- Propiedades → Seguridad
- 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!


