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 Windows
  • security = user → autenticación por usuario Samba
  • browseable → si aparece en la lista de recursos al explorar la red
  • writable → permitir escritura
  • guest ok → permitir acceso sin contraseña
  • valid users → lista de usuarios o grupos (@grupo) con acceso
  • create 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
          

Samba es la solución estándar para integrar servidores Linux en entornos con clientes Windows, proporcionando acceso transparente a los recursos compartidos sin necesidad de software adicional en el cliente.

Compartición de archivos con NFS

Índice de la sección

Índice del curso