Samba on Linux: Complete guide to sharing files on the network

Samba es la implementación de código abierto del protocolo SMB/CIFS que permite a los sistemas Linux interactuar con redes Windows, compartiendo impresoras, archivos y otros recursos de forma transparente. Su adopción se ha convertido en un pilar para entornos mixtos donde Linux actúa como servidor de archivos, dominio o simplemente como nodo de intercambio. En este post vamos a revisar paso a paso cómo instalar, configurar y mantener Samba en distribuciones Linux populares, destacando buenas prácticas de seguridad y solución de problemas comunes.

¿Qué es Samba y para qué sirve?

Samba proporciona servicios de archivo e impresión mediante el protocolo SMB (Server Message Block), el mismo que utilizan las versiones modernas de Windows para comunicarse en redes locales. Gracias a Samba, un equipo Linux puede aparecer como un “servidor Windows” en el Explorador de archivos de cualquier PC con Windows, macOS o incluso otro Linux que tenga cliente SMB. Además, permite autenticación contra dominios Active Directory, LDAP o bases de datos locales, lo que lo hace extremadamente flexible para escenarios corporativos y domésticos.

Instalación de Samba en distribuciones Linux populares

El proceso de instalación varía ligeramente según el gestor de paquetes, pero los pasos fundamentales son los mismos. En distribuciones basadas en Debian/Ubuntu se usa apt, mientras que en Red Hat, CentOS y Fedora se recurre a dnf o yum. En Arch Linux y derivados el gestor es pacman. A continuación, los comandos típicos:

  • Debian/Ubuntu: sudo apt update && sudo apt install samba samba-common-bin
  • RHEL/CentOS/Fedora: sudo dnf install samba samba-client samba-common
  • Arch Linux: sudo pacman -S samba

Tras la instalación, el servicio smbd (daemon de Samba) y nmbd (resolución de nombres NetBIOS) deben estar habilitados y arrancados:

  • sudo systemctl enable --now smbd nmbd
  • Verificar estado: sudo systemctl status smbd

Con esto, el servidor está listo para aceptar conexiones SMB en el puerto 445.

Configuración básica del archivo smb.conf

El corazón de Samba reside en /etc/samba/smb.conf. Este archivo está dividido en secciones globales y de recursos compartidos (shares). Una configuración mínima incluye definir el grupo de trabajo, la cadena de texto del servidor y la ruta de los logs.

  • [global] -> workgroup = WORKGROUP, server string = Servidor Samba %h, log file = /var/log/samba/log.%m, max log size = 1000, logging = file
  • [homes] (opcional) para compartir los directorios personales de cada usuario con read only = no y <code=browseable = no.

Después de cualquier edición, es esencial recargar la configuración sin reiniciar el servicio completo:

  • sudo testparm para validar la sintaxis.
  • sudo systemctl reload smbd para aplicar cambios.

Creando un recurso compartido sencillo

Supongamos que queremos compartir una carpeta llamada /srv/samba/public accesible para todos los usuarios de la red sin autenticación (modo invitado). Primero, creamos el directorio y ajustamos permisos:

  • sudo mkdir -p /srv/samba/public
  • sudo chown -R nobody:nogroup /srv/samba/public
  • sudo chmod -R 0777 /srv/samba/public

Luego, añadimos al final de smb.conf:

[public]
   comment = Carpeta pública de intercambio
   path = /srv/samba/public
   browseable = yes
   read only = no
   guest ok = yes
   force user = nobody

Guardamos, validamos con testparm y recargamos Samba. Ahora, desde cualquier cliente Windows podemos explorar \IP_DEL_SERVIDOR\public y crear o modificar archivos sin necesidad de credenciales.

Permisos y seguridad

Aunque el modo invitado es útil para pruebas, en entornos productivos se recomienda implementar autenticación. Samba permite:

  • Autenticación de usuarios locales: crear cuentas de sistema con sudo adduser usuario_samba y luego asignar una contraseña SMB mediante sudo smbpasswd -a usuario_samba.
  • Integración con LDAP/Active Directory: mediante el módulo winbind y la configuración de security = ads o security = domain.
  • Restricciones por IP o red: usar hosts allow = 192.168.1.0/24 y hosts deny = 0.0.0.0/0 dentro de cada share.
  • Cifrado de tráfico: forzar SMB3 con server min protocol = SMB3 y habilitar encrypt passwords = yes.

Además, es buena práctica mantener el servidor actualizado y revisar los logs (/var/log/samba/log.*) para detectar intentos de acceso no autorizado.

Solución de problemas frecuentes

Los administradores suelen encontrarse con algunos obstáculos típicos. Aquí una lista de los más comunes y cómo abordarlos:

  • No se ve el share en el Explorador de archivos: verificar que nmbd esté activo (systemctl status nmbd) y que el firewall permita los puertos 137-138 (UDP) y 445 (TCP).
  • Acceso denegado pese a credenciales correctas: asegurarse de que el usuario UNIX tenga permiso de lectura/escritura sobre el directorio compartido y que read only esté establecido a no.
  • Rendimiento lento: comprobar la latencia de la red, activar socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536 y considerar el uso de discos SSD o caché de escritura.
  • Errores de permisos después de actualizar el kernel: a veces se requiere reiniciar el servicio smbd o recargar el módulo cifs en los clientes.
  • Problemas de nomenclatura (NetBIOS): asegurarse de que el netbios name sea único y no exceda 15 caracteres.

En caso de dudas, el comando smbclient -L //localhost -U% lista los shares disponibles localmente y ayuda a aislar si el fallo está en el servidor o en el cliente.

Conclusión

Samba sigue siendo una solución robusta y versátil para integrar sistemas Linux en entornos dominados por Windows, ofreciendo compartición de archivos e impresión con un nivel de configuración que se adapta tanto a redes domésticas como a infraestructuras empresariales. Siguiendo los pasos de instalación, ajustando cuidadosamente smb.conf, aplicando principios de seguridad mínimos y monitoreando los logs, los administradores pueden mantener un servicio estable y performante. La clave está en probar cambios en un entorno de control antes de llevarlos a producción y en documentar cada ajuste para facilitar futuras auditorías o migraciones.