Actualización editorial: artículo original de 2020, reescrito y ampliado el 31 de octubre de 2026.
Samba es una implementación libre del protocolo SMB y de otros componentes necesarios para interoperar con entornos Windows. Permite compartir archivos e impresoras desde Unix y GNU/Linux, integrar servidores al Active Directory corporativo y, en determinados diseños, implementar controladores de dominio compatibles.
SMB es el protocolo; Samba es el conjunto de software. CIFS fue una variante histórica de SMB 1. En una red moderna se debe usar SMB 2 o SMB 3 y mantener SMB 1 deshabilitado salvo una excepción temporal, aislada y documentada.
1. Roles posibles
| Rol | Uso | Identidad |
|---|---|---|
| Standalone | Compartir archivos con cuentas locales | Usuarios Unix y base de contraseñas Samba |
| Member server | Servidor de archivos dentro de un dominio | Active Directory, Kerberos y winbind |
| AD Domain Controller | Servicios de dominio, Kerberos, LDAP y DNS | Samba AD DC |
| Cliente | Acceder a recursos SMB remotos | smbclient o montaje CIFS |
2. Instalación de un servidor independiente
# RHEL, Rocky, AlmaLinux o Fedora
sudo dnf install samba samba-client policycoreutils-python-utils
# Debian o Ubuntu
sudo apt update
sudo apt install samba smbclient
# Crear grupo, directorio y permisos
sudo groupadd -f archivos
sudo mkdir -p /srv/samba/proyectos
sudo chown root:archivos /srv/samba/proyectos
sudo chmod 2770 /srv/samba/proyectos
El bit SGID en el directorio hace que los archivos nuevos hereden el grupo. Los permisos Unix o las ACL siguen siendo el límite real: Samba nunca debe conceder más acceso del que permite el sistema de archivos.
3. Configuración base segura
[global]
workgroup = WORKGROUP
server role = standalone server
security = user
map to guest = never
server min protocol = SMB2_10
server signing = mandatory
log file = /var/log/samba/%m.log
max log size = 1000
[proyectos]
path = /srv/samba/proyectos
browseable = yes
read only = no
guest ok = no
valid users = @archivos
force group = archivos
create mask = 0660
directory mask = 2770
inherit permissions = yes
La referencia oficial de smb.conf documenta cada parámetro y sus valores actuales. Copiar una plantilla antigua puede reactivar dialectos o comportamientos que ya no son apropiados.
4. Crear usuarios y validar
# El usuario debe existir en el sistema
sudo useradd -M -s /usr/sbin/nologin ana
sudo usermod -aG archivos ana
# Registrar una contraseña SMB
sudo smbpasswd -a ana
# Validar sintaxis efectiva
testparm -s
# Iniciar servicios
sudo systemctl enable --now smb
sudo systemctl status smb
En Debian/Ubuntu los nombres de unidad pueden ser smbd y nmbd. En redes que usan DNS y acceso directo por TCP 445, NetBIOS y nmbd pueden no ser necesarios.
5. SELinux y firewall
# Etiquetar contenido compartido en sistemas con SELinux
sudo semanage fcontext -a -t samba_share_t '/srv/samba(/.*)?'
sudo restorecon -Rv /srv/samba
# Firewalld
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
No conviene resolver un rechazo con setenforce 0 o permisos 777. Revisa namei -l, ACL, grupo efectivo, contexto SELinux y registros. Cada capa debe permitir el mismo acceso de forma deliberada.
6. Probar desde Linux y Windows
# Descubrir recursos y probar autenticación
smbclient -L //servidor -U ana
smbclient //servidor/proyectos -U ana
# Montaje temporal desde Linux
sudo mount -t cifs //servidor/proyectos /mnt/proyectos \
-o username=ana,vers=3.1.1
# Ver sesiones y archivos abiertos en el servidor
sudo smbstatus
En Windows se accede con \\servidor\proyectos. Para automatizar un montaje Linux, guarda secretos en un archivo protegido con modo 0600 y referencia credentials=/ruta/archivo; no escribas contraseñas en /etc/fstab ni en el historial del shell.
7. SMB signing y cifrado
La firma protege integridad y ayuda a impedir manipulación. El cifrado de SMB 3 protege el contenido en tránsito. La documentación de Samba permite exigir cifrado globalmente o por recurso con server smb encrypt = required. Esa decisión puede excluir clientes antiguos y consumir CPU, por lo que debe verificarse con los sistemas reales.
[confidencial]
path = /srv/samba/confidencial
read only = no
valid users = @finanzas
server smb encrypt = required
- Mantener
server min protocolen SMB2 o superior. - Exigir firma o cifrado según el riesgo y la capacidad de los clientes.
- Restringir TCP 445 a redes y equipos autorizados.
- No exponer SMB directamente a Internet.
- Aplicar actualizaciones de Samba y del sistema operativo.
8. Integración con Active Directory
Un servidor miembro usa DNS del dominio, hora sincronizada, Kerberos y winbind o integración equivalente para resolver identidades. Antes de unirlo, valida:
hostname -f
timedatectl
resolvectl status
dig _ldap._tcp.example.com SRV
kinit administrador@EXAMPLE.COM
klist
Después se configura realm, security = ADS, mapeo de identificadores y método de keytab de acuerdo con la distribución. El mapeo UID/GID debe ser estable: cambiar rangos o backends después de crear archivos puede hacer que los propietarios aparezcan incorrectos.
9. ACL y herencia
Para un servidor corporativo, las ACL POSIX o las ACL compatibles con Windows deben diseñarse antes de migrar datos. Prueba creación, renombre, herencia, eliminación y acceso de aplicaciones. Evita combinar force user, permisos amplios y ACL complejas sin comprender cuál capa decide el resultado.
# Inspeccionar y asignar ACL POSIX
getfacl /srv/samba/proyectos
sudo setfacl -m g:arquitectura:rwx /srv/samba/proyectos
sudo setfacl -d -m g:arquitectura:rwx /srv/samba/proyectos
10. Operación, respaldo y alta disponibilidad
Respalda datos, ACL, atributos extendidos, smb.conf, secretos y la información específica del rol. Un respaldo de archivos sin ACL puede restaurar contenido inaccesible o demasiado abierto. Usa herramientas que preserven xattrs y prueba restauración en un servidor aislado.
Un clúster de archivos requiere coordinación de almacenamiento, locks, direcciones y estado. CTDB puede distribuir servicios Samba en arquitecturas compatibles, pero no convierte dos servidores independientes con un directorio copiado en un clúster seguro. Para muchos equipos, un servicio administrado o una solución NAS soportada reduce riesgo operativo.
11. Diagnóstico
testparm -s
sudo smbstatus
sudo journalctl -u smb --since today
sudo ss -lntp | grep ':445'
sudo ausearch -m AVC -ts recent
getent passwd ana
namei -l /srv/samba/proyectos
smbclient //localhost/proyectos -U ana -d 3
Diagnostica en orden: nombre y DNS, red y puerto, negociación SMB, autenticación, autorización Samba, permisos del sistema de archivos y SELinux. Esa secuencia evita cambiar muchas variables al mismo tiempo.
Conclusión
Samba es una plataforma madura y flexible, pero el éxito depende menos de que el recurso “aparezca en Windows” y más de identidad, permisos, protocolo, cifrado, respaldo y operación. Un diseño sencillo con SMB moderno, acceso autenticado, ACL claras y monitoreo suele ser más confiable que una configuración llena de excepciones.
