Compartición de archivos con Samba
Introducción
Samba es la implementación libre del protocolo SMB/CIFS, que permite compartir archivos e impresoras entre sistemas Linux y Windows en una red local. Un servidor Samba puede actuar como servidor de archivos independiente o integrarse en un dominio Windows como controlador de dominio o miembro del mismo.
Instalación
# apt install samba samba-client # Debian/Ubuntu
# dnf install samba samba-client # RHEL/Rocky
$ systemctl enable --now smbd nmbd
$ systemctl status smbd
Configuración: /etc/samba/smb.conf
El fichero de configuración tiene una sección [global] y una sección por cada recurso compartido.
Estructura básica:
[global]
workgroup = WORKGROUP
server string = Servidor Samba
security = user
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 1000
[compartido]
path = /srv/samba/compartido
browseable = yes
writable = yes
guest ok = no
valid users = juan, @admins
create mask = 0664
directory mask = 0775
Parámetros clave:
workgroup→ nombre del grupo de trabajo o dominio Windowssecurity = user→ autenticación por usuario Sambabrowseable→ si aparece en la lista de recursos al explorar la redwritable→ permitir escrituraguest ok→ permitir acceso sin contraseñavalid users→ lista de usuarios o grupos (@grupo) con accesocreate mask→ permisos de los ficheros creados
Gestión de usuarios Samba
Samba mantiene su propia base de datos de contraseñas, separada de la de Linux. El usuario debe existir primero como usuario del sistema.
# useradd -M -s /sbin/nologin juan # crear usuario solo para Samba
# smbpasswd -a juan # añadir usuario a Samba y asignar contraseña
# smbpasswd -e juan # habilitar usuario
# smbpasswd -d juan # deshabilitar usuario
# smbpasswd -x juan # eliminar usuario de Samba
$ pdbedit -L # listar usuarios Samba
Preparar el directorio compartido
# mkdir -p /srv/samba/compartido
# chown root:admins /srv/samba/compartido
# chmod 2775 /srv/samba/compartido # sticky bit para que el grupo herede
Verificar y recargar configuración
$ testparm # validar smb.conf sin errores
# systemctl restart smbd # aplicar cambios
$ smbclient -L localhost -U juan # listar recursos disponibles
Acceder a recursos Samba desde Linux
Con smbclient (interactivo, como un FTP):
$ smbclient //servidor/compartido -U juan
Montar el recurso en el sistema de archivos:
# apt install cifs-utils
# mount -t cifs //servidor/compartido /mnt/samba -o username=juan,password=clave
Montaje permanente en /etc/fstab:
//servidor/compartido /mnt/samba cifs credentials=/etc/samba/.creds,uid=1000,gid=1000 0 0
# /etc/samba/.creds
username=juan
password=micontraseña
# chmod 600 /etc/samba/.creds