Compartición de archivos Samba | Guía completa 2026

comparticion-de-archivos-samba
comparticion-de-archivos-samba

Samba permite compartir directorios de un servidor Linux mediante SMB, el protocolo que también utilizan Windows y numerosos dispositivos de red. Su utilidad está en los entornos mixtos: los clientes acceden a una carpeta de red usando una cuenta y una ruta compartida, mientras el servidor conserva el control de los archivos.

Para que una escritura funcione deben coincidir tres permisos: la cuenta debe autenticarse en Samba, estar autorizada para el recurso y tener permisos Unix sobre la ruta. Un “acceso denegado” suele aparecer cuando falla una de esas capas; abrir el firewall o cambiar permisos a 777 no es una solución general.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

También puedes consultar la guía de comandos Linux por categorías.

Cuándo elegir Samba

Samba encaja cuando los usuarios necesitan abrir una carpeta desde el Explorador de Windows, compartir archivos con sistemas Linux o acceder a dispositivos que hablan SMB. En una red exclusivamente Linux, NFS puede resultar más natural para montajes entre servidores; para transferencias puntuales, SFTP suele ser suficiente.

Instalar Samba y comprobar el servicio

En Debian y Ubuntu instala el servidor, el cliente de diagnóstico y las utilidades para montar recursos SMB en Linux:

sudo apt update
sudo apt install samba smbclient cifs-utils

En Fedora, Rocky Linux, AlmaLinux y sistemas relacionados se usan estos paquetes:

sudo dnf install samba samba-client cifs-utils

El nombre de la unidad systemd cambia según la familia de distribución: Debian y Ubuntu usan smbd; Fedora, RHEL, Rocky y AlmaLinux suelen usar smb. Activa la unidad que corresponda:

# Debian y Ubuntu
sudo systemctl enable --now smbd

# Fedora, RHEL, Rocky Linux y AlmaLinux
sudo systemctl enable --now smb

Si ya está activa, el comando deja el servicio habilitado al arranque y lo inicia ahora. Comprueba el estado usando el nombre correcto para tu sistema.

Crear el grupo, la cuenta y el directorio

El ejemplo crea un recurso privado para miembros de sambausers. Ejecuta groupadd solo si el grupo aún no existe, y adduser solo para crear una cuenta Linux nueva. Si la cuenta ya existe, omite ese paso y añádela al grupo.

sudo groupadd sambausers
sudo adduser usuario
sudo usermod -aG sambausers usuario
sudo smbpasswd -a usuario

El último comando añade el usuario existente a la base de Samba y solicita una contraseña SMB. No hace falta ejecutar smbpasswd -e en el flujo normal: esa opción sirve para volver a habilitar una cuenta Samba que se había desactivado. La contraseña SMB se gestiona aparte de la contraseña Linux.

Crea la carpeta y asigna el grupo. En directorios, el modo 2770 activa setgid para que los subdirectorios hereden el grupo; los archivos normales deben tener 0660 y no necesitan el bit ejecutable.

sudo mkdir -p /srv/samba/compartido
sudo chown -R root:sambausers /srv/samba/compartido
sudo find /srv/samba/compartido -type d -exec chmod 2770 {} +
sudo find /srv/samba/compartido -type f -exec chmod 0660 {} +

Si acabas de añadir una cuenta existente al grupo, cierra las sesiones SMB del cliente y vuelve a conectar para que la nueva autorización se compruebe.

Definir el recurso en smb.conf

Haz una copia antes de editar el archivo principal de Samba:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Añade esta sección a /etc/samba/smb.conf. Las opciones create mask y directory mask limitan los permisos solicitados; las opciones force create mode y force directory mode fuerzan los bits compartidos que este ejemplo necesita.

[compartido]
   path = /srv/samba/compartido
   browseable = yes
   read only = no
   guest ok = no
   valid users = @sambausers
   create mask = 0660
   force create mode = 0660
   directory mask = 2770
   force directory mode = 2770

El nombre entre corchetes es el que formará parte de la ruta SMB. valid users restringe el acceso al grupo indicado; read only = no permite escritura desde Samba, pero Linux todavía debe concederla sobre el directorio.

Valida primero la configuración. Solo si no hay errores, reinicia la unidad adecuada para aplicar los cambios:

testparm -s

# Debian y Ubuntu
sudo systemctl restart smbd

# Fedora, RHEL, Rocky Linux y AlmaLinux
sudo systemctl restart smb

Limitar el acceso en el firewall

Permite SMB únicamente desde la subred local que realmente uses. En este ejemplo, sustituye 192.168.1.0/24 por la red de tus clientes. No publiques SMB directamente en Internet.

sudo ufw allow from 192.168.1.0/24 to any app Samba

Con firewalld, identifica primero la zona de la interfaz conectada a la LAN y sustituye home por esa zona si tiene otro nombre:

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --permanent --zone=home --add-service=samba
sudo firewall-cmd --reload

Si la distribución usa SELinux

En Fedora, RHEL, Rocky Linux o AlmaLinux, SELinux puede bloquear el acceso aunque los permisos Unix y Samba parezcan correctos. Para compartir esta ruta, asigna el tipo de contexto Samba y restaura las etiquetas:

sudo semanage fcontext -a -t samba_share_t '/srv/samba/compartido(/.*)?'
sudo restorecon -Rv /srv/samba/compartido

Si semanage no está instalado, instala el paquete de utilidades de política SELinux de tu distribución. Evita desactivar SELinux para resolver un permiso de carpeta.

Conectarse desde Windows o Linux

En Windows, escribe esta ruta en la barra del Explorador y cambia la dirección IP por la del servidor:

\\192.168.1.50\compartido

Cuando aparezca el cuadro de autenticación, usa el nombre de usuario Linux registrado en Samba y su contraseña SMB. Desde Linux, lista los recursos y prueba la conexión directa:

smbclient -L //192.168.1.50 -U usuario
smbclient //192.168.1.50/compartido -U usuario

Dentro de smbclient puedes usar ls para listar, put archivo.txt para subir un archivo y get archivo.txt para descargarlo. Así compruebas autenticación y acceso al recurso sin depender de la detección automática de equipos en la red.

Para montar el recurso temporalmente en un cliente Linux, crea un punto de montaje y ejecuta el comando; se solicitará la contraseña:

sudo mkdir -p /mnt/compartido
sudo mount -t cifs //192.168.1.50/compartido /mnt/compartido -o username=usuario

Diagnosticar los fallos habituales

SíntomaQué revisar primero
No conecta con el servidorServicio activo, dirección IP, ruta de red y regla de firewall limitada a la LAN.
Rechaza las credencialesNombre de usuario y contraseña SMB; confirma que la cuenta se registró con smbpasswd.
Autentica, pero deniega el recursovalid users, pertenencia al grupo, permisos de cada directorio de la ruta y contexto SELinux.
La carpeta no aparece al explorar la redPrueba la ruta UNC por IP. La exploración y la resolución del nombre son distintas de la conexión SMB directa.

Comprueba los mensajes recientes del servicio. Usa la unidad correspondiente a la distribución:

# Debian y Ubuntu
sudo journalctl -u smbd --no-pager -n 80

# Fedora, RHEL, Rocky Linux y AlmaLinux
sudo journalctl -u smb --no-pager -n 80

Si modificaste smb.conf, vuelve a ejecutar testparm -s antes de reiniciar. Evita probar “soluciones” como chmod 777: ocultan el problema y conceden acceso local amplio.

Mantener el recurso protegido

  • Desactiva el acceso invitado y deja valid users limitado a las cuentas o grupos que necesitan la carpeta.
  • Publica directorios dedicados, no /, /etc ni todo /home.
  • Mantén los paquetes de Samba actualizados y conserva SMB dentro de redes de confianza o una VPN.
  • Retira el acceso Samba cuando una cuenta ya no deba entrar; smbpasswd -x usuario elimina su cuenta de Samba, pero no borra la cuenta Linux.

Documentación de referencia

En una configuración Samba fiable, cada capa tiene una función concreta: Samba autentica y publica el recurso; el firewall limita qué equipos llegan al servicio; Linux y SELinux deciden si el proceso puede usar la ruta. Diagnosticar cada capa por separado evita abrir permisos de más.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *