SMB / CIFS
SMB / CIFS
Introducción
SMB (Server Message Block), también conocido como CIFS, es un protocolo de compartición de archivos muy utilizado en entornos Windows y mixtos (Linux / Windows).
En sistemas Linux, el servicio que implementa SMB/CIFS es **Samba**, que permite:
- Compartir directorios con clientes Windows
- Integrar sistemas Linux en dominios Windows
- Proveer recursos compartidos con control de usuarios y permisos
- Autenticación local o mediante Active Directory
SMB funciona sobre TCP (puerto 445) y es el estándar de facto en redes Windows.
Crear un servidor SMB / CIFS
Para crear un recurso compartido SMB se necesita:
- Un servidor Linux con Samba instalado
- Un directorio que compartir
- Usuarios válidos para acceder al recurso
- Conectividad de red entre cliente y servidor
Instalación de Samba
En sistemas basados en RHEL:
dnf install -y samba samba-client samba-common
Habilitar y arrancar los servicios:
systemctl enable --now smb nmb
Comprobar estado:
systemctl status smb
Crear el directorio compartido
[root@nodo1 ~]# mkdir -p /srv/samba/datos
[root@nodo1 ~]# chmod 770 /srv/samba/datos
[root@nodo1 ~]# chown root:sambashare /srv/samba/datos
[root@nodo1 ~]# ls -lrtd /srv/samba/datos
drwxrwx---. 2 root sambashare 6 Feb 2 19:39 /srv/samba/datos
[root@nodo1 ~]#
> El grupo puede ajustarse según el modelo de permisos deseado.
Crear usuarios Samba
El usuario debe existir previamente en el sistema:
[root@nodo1 ~]# useradd usuario1
[root@nodo1 ~]# passwd usuario1
Changing password for user usuario1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@nodo1 ~]# usermod -aG sambashare usuario1
[root@nodo1 ~]# id usuario1
uid=1000(usuario1) gid=1001(usuario1) groups=1001(usuario1),1000(sambashare)
Añadir el usuario a Samba:
[root@nodo1 ~]# smbpasswd -a usuario1
New SMB password:
Retype new SMB password:
Added user usuario1.
Habilitarlo:
[root@nodo1 ~]# smbpasswd -e usuario1
Enabled user usuario1.
Configuración de Samba
Editar el fichero `/etc/samba/smb.conf`.
Ejemplo de configuración básica:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
#
# Note:
# SMB1 is disabled by default. This means clients without support for SMB2 or
# SMB3 are no longer able to connect to smbd (by default).
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[datos]
path = /srv/samba/datos
browsable = yes
writable = yes
valid users = usuario1
create mask = 0660
directory mask = 0770
Verificar la sintaxis:
[root@nodo1 ~]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
printcap name = cups
security = USER
workgroup = SAMBA
idmap config * : backend = tdb
cups options = raw
[homes]
browseable = No
comment = Home Directories
inherit acls = Yes
read only = No
valid users = %S %D%w%S
[datos]
create mask = 0660
directory mask = 0770
path = /srv/samba/datos
read only = No
valid users = usuario1
[root@nodo1 ~]#
Reiniciar el servicio:
[root@nodo1 ~]# systemctl restart smb
[root@nodo1 ~]# systemctl status smb
Failed to find catalog entry: Invalid argument
Failed to find catalog entry: Invalid argument
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; preset: disabled)
Active: active (running) since Mon 2026-02-02 19:44:26 CET; 7s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 9816 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 23115)
Memory: 7.2M
CPU: 46ms
CGroup: /system.slice/smb.service
├─9816 /usr/sbin/smbd --foreground --no-process-group
├─9819 /usr/sbin/smbd --foreground --no-process-group
└─9820 /usr/sbin/smbd --foreground --no-process-group
Feb 02 19:44:26 nodo1 systemd[1]: Starting Samba SMB Daemon...
Feb 02 19:44:26 nodo1 systemd[1]: Started Samba SMB Daemon.
[root@nodo1 ~]#
Acceso al recurso SMB
Requisitos Previos
En el cliente Linux:
dnf install -y cifs-utils samba-client
Comprobar recursos disponibles:
[root@nodo2 ~]# smbclient -L node1 -U usuario1
Password for [SAMBA\usuario1]:
Sharename Type Comment
--------- ---- -------
datos Disk
IPC$ IPC IPC Service (Samba 4.22.4)
usuario1 Disk Home Directories
SMB1 disabled -- no workgroup available
Montaje manual
Crear punto de montaje:
mkdir -p /mnt/smb/datos
Montar el recurso:
[root@nodo2 ~]# mount -t cifs //node1/datos /mnt/smb/datos -o username=usuario1
Password for usuario1@//node1/datos:
Verificar:
[root@nodo2 ~]# df -hT /mnt/smb/datos
Filesystem Type Size Used Avail Use% Mounted on
//node1/datos cifs 17G 2.5G 15G 15% /mnt/smb/datos
Montaje persistente (fstab)
Crear un fichero de credenciales:
[root@nodo2 ~]# cat /root/.smbcred
username=usuario1
password=PASSWORD
Añadir a `/etc/fstab`:
[root@nodo2 ~]# grep -i node1 /etc/fstab
//node1/datos /mnt/smb/datos cifs credentials=/root/.smbcred,_netdev 0 0
Aplicar:
[root@nodo2 ~]# mount /mnt/smb/datos -vvv
Host "node1" resolved to the following IP addresses: 192.168.1.81
mount.cifs kernel mount options: ip=192.168.1.81,unc=\\node1\datos,user=usuario1,pass=********
[root@nodo2 ~]# df -hT /mnt/smb/datos
Filesystem Type Size Used Avail Use% Mounted on
//node1/datos cifs 17G 2.5G 15G 15% /mnt/smb/datos
Configuración de red
Permitir tráfico SMB en el firewall del servidor:
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
Comprobar reglas:
firewall-cmd --list-all
Puertos utilizados:
- TCP 445 (SMB)
- TCP/UDP 137-139 (NetBIOS, opcional)
Verificación y diagnóstico
Ver usuarios Samba:
[root@nodo1 ~]# pdbedit -L
usuario1:1000:
Ver conexiones activas:
[root@nodo1 ~]# smbstatus
Samba version 4.22.4
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
10420 usuario1 usuario1 192.168.1.82 (ipv4:192.168.1.82:49084) SMB3_11 - partial(AES-128-CMAC)
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
datos 10420 192.168.1.82 Mon Feb 2 07:57:51 PM 2026 CET - -
IPC$ 10420 192.168.1.82 Mon Feb 2 07:57:51 PM 2026 CET - -
Locked files:
Pid User(ID) DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
10420 1000 DENY_NONE 0x89 RDONLY LEASE(RH) /srv/samba/datos . Mon Feb 2 19:57:55 2026
Probar acceso local:
smbclient //localhost/datos -U usuario1
Logs relevantes:
- `/var/log/samba/`
- `journalctl -u smb`
Buenas prácticas
- Usar autenticación por usuario (evitar guest)
- Limitar acceso con `valid users`
- Proteger credenciales (ficheros 600)
- Mantener Samba actualizado
- Integrar con AD si el entorno lo requiere