Compartición de archivos en red con Samba

Sistemas Operativos en Red

SOR

Introducción

En un entorno de red real, una de las necesidades más habituales es compartir carpetas y documentos entre distintos equipos de forma controlada. En centros educativos, oficinas o empresas, es común disponer de un servidor que centraliza información (material de trabajo, proyectos, copias de seguridad o documentos compartidos) y permite que los usuarios accedan desde sus ordenadores, normalmente con Windows. En Ubuntu Server, esta función se puede implementar de manera eficiente mediante Samba, un conjunto de servicios que permite ofrecer recursos compartidos usando el protocolo SMB/CIFS.

Esta unidad se apoya directamente en lo aprendido en las unidades anteriores: usuarios, grupos y permisos. Configurar Samba no consiste solo en “publicar” una carpeta: también implica decidir quién puede acceder, qué puede hacer (leer, escribir, crear o eliminar archivos) y cómo se organiza el acceso (carpetas públicas, privadas o por departamentos/grupos). A lo largo del tema aprenderemos a instalar y configurar Samba, crear recursos compartidos típicos y verificar el acceso desde Windows, además de identificar y resolver los errores más comunes relacionados con permisos y autenticación.

Objetivos

En esta unidad aprenderemos a instalar y configurar el servicio Samba en Ubuntu Server para compartir archivos en red de forma segura, integrando los conocimientos previos sobre usuarios, grupos y permisos.

  • Comprender el funcionamiento del protocolo SMB/CIFS y el papel de Samba en entornos cliente-servidor.
  • Instalar y verificar el correcto funcionamiento del servicio Samba en Ubuntu Server.
  • Diferenciar entre usuarios Linux y usuarios Samba, y gestionar la autenticación de acceso a los recursos.
  • Configurar recursos compartidos públicos, privados y por grupos aplicando permisos adecuados.
  • Acceder a los recursos compartidos desde un sistema Windows y comprobar su funcionamiento.
  • Identificar y resolver problemas habituales relacionados con permisos, usuarios y configuración del servicio.

Contenidos

Los contenidos de esta unidad se organizan desde los conceptos básicos hasta la configuración práctica de recursos compartidos en un entorno real de red.

  • Introducción a Samba y al protocolo SMB/CIFS.
  • Escenarios de uso de Samba en redes locales mixtas (Linux / Windows).
  • Instalación del servicio Samba en Ubuntu Server.
  • Servicios asociados: smbd y nmbd.
  • Estructura y edición del archivo de configuración /etc/samba/smb.conf.
  • Validación de la configuración mediante la herramienta testparm.
  • Gestión de usuarios Linux y usuarios Samba con smbpasswd.
  • Configuración de recursos compartidos:
    • Recurso público.
    • Recurso privado por usuario.
    • Recurso compartido por grupos.
  • Relación entre permisos Linux y permisos Samba.
  • Acceso a recursos compartidos desde sistemas Windows.
  • Comprobaciones, diagnóstico y resolución de errores habituales.

Conceptos básicos

Antes de comenzar con la instalación y configuración de Samba, es importante repasar algunos conceptos clave relacionados con la compartición de archivos en red y el control de acceso a los recursos.

  • SMB/CIFS: protocolo de red utilizado para compartir archivos, carpetas e impresoras entre equipos. Es el protocolo nativo de los sistemas Windows y uno de los más utilizados en redes locales.
  • Samba: conjunto de servicios que permite a sistemas Linux actuar como servidores o clientes SMB/CIFS, facilitando la interoperabilidad entre Linux y Windows.
  • Recurso compartido: carpeta o directorio del servidor que se pone a disposición de otros equipos de la red, pudiendo configurarse como público, privado o restringido a determinados usuarios o grupos.
  • Autenticación: mecanismo que determina cómo se identifican los usuarios al acceder a un recurso compartido. Puede realizarse como invitado (guest) o mediante usuario y contraseña.
  • Usuarios Linux vs usuarios Samba: Samba utiliza su propia base de datos de usuarios, aunque estos deben existir previamente en el sistema Linux.
  • Permisos: conjunto de reglas que determinan qué acciones pueden realizar los usuarios sobre los archivos. En Samba intervienen dos niveles: los permisos reales del sistema Linux y las reglas definidas en la configuración del recurso compartido.

Instalación de Samba en Ubuntu Server

El primer paso para poder compartir archivos en red es instalar el servicio Samba en el servidor Ubuntu. Samba se distribuye como un paquete estándar en los repositorios oficiales, por lo que su instalación resulta sencilla y rápida.

Antes de instalar cualquier servicio, es recomendable actualizar la lista de paquetes del sistema:

sudo apt update

A continuación, instalamos Samba mediante el gestor de paquetes apt:

sudo apt install samba -y

Una vez finalizada la instalación, el sistema crea automáticamente los servicios necesarios y los inicia. Samba se compone principalmente de dos demonios:

  • smbd: gestiona la compartición de archivos y la autenticación de los usuarios.
  • nmbd: se encarga de la resolución de nombres NetBIOS en la red local.

Podemos comprobar que el servicio se encuentra activo utilizando el siguiente comando:

systemctl status smbd

Si el servicio está correctamente instalado, su estado deberá aparecer como active (running). En caso contrario, será necesario revisar los mensajes de error antes de continuar con la configuración.

A partir de este momento, el servidor ya dispone de Samba instalado y en funcionamiento, quedando preparado para definir y configurar los distintos recursos compartidos.

Archivo smb.conf y estructura de configuración

La configuración de Samba se realiza principalmente a través del archivo /etc/samba/smb.conf. En este archivo se definen los parámetros generales del servicio y los distintos recursos compartidos que ofrecerá el servidor en la red.

Antes de realizar cualquier modificación, es una buena práctica crear una copia de seguridad del archivo original:

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

El archivo smb.conf se organiza en secciones. Cada sección comienza entre corchetes y cumple una función concreta. De forma general, podemos distinguir dos tipos principales:

  • Sección [global]: contiene la configuración general del servicio Samba, como el grupo de trabajo, opciones de seguridad o parámetros por defecto.
  • Secciones de recursos compartidos: cada una representa una carpeta compartida y define su ruta, permisos y reglas de acceso.

Un ejemplo simplificado de estructura del archivo sería el siguiente:

[global]
           workgroup = WORKGROUP
           security = user

        [recurso]
           path = /ruta/al/recurso
           read only = no
           browsable = yes

Tras realizar cualquier cambio en el archivo de configuración, es muy importante comprobar que no existen errores de sintaxis. Para ello, Samba proporciona la herramienta testparm:

testparm

Si la configuración es correcta, el comando mostrará un mensaje de validación sin errores. En caso contrario, indicará la línea problemática, lo que facilita la corrección antes de reiniciar el servicio.

Una vez validada la configuración, será necesario reiniciar el servicio para que los cambios tengan efecto:

sudo systemctl restart smbd

Comprender la estructura del archivo smb.conf es fundamental, ya que todas las configuraciones de recursos compartidos que veremos a continuación se basan en la correcta edición de este fichero.

Usuarios Linux vs usuarios Samba (smbpasswd)

Para acceder a los recursos compartidos mediante Samba es necesario comprender la diferencia entre los usuarios del sistema Linux y los usuarios de Samba. Aunque están relacionados, no son exactamente lo mismo.

Samba utiliza su propia base de datos de usuarios para la autenticación, pero solo puede trabajar con usuarios que ya existen en el sistema Linux. Por tanto, el proceso habitual consiste en crear primero el usuario en Linux y posteriormente habilitarlo para su uso en Samba.

Creación de un usuario en Linux

Si el usuario no existe en el sistema, se puede crear utilizando el comando adduser:

sudo adduser alumno1

Alta del usuario en Samba

Una vez creado el usuario en Linux, se debe añadir a la base de datos de Samba mediante el comando smbpasswd:

sudo smbpasswd -a alumno1

Durante este proceso se solicitará una contraseña, que será la utilizada para acceder a los recursos compartidos desde los equipos clientes (por ejemplo, Windows).

Gestión de usuarios Samba

Samba permite habilitar o deshabilitar usuarios sin eliminarlos del sistema:

sudo smbpasswd -e alumno1   # Habilitar usuario
        sudo smbpasswd -d alumno1   # Deshabilitar usuario

Esta separación entre usuarios Linux y usuarios Samba permite un mayor control sobre el acceso a los recursos compartidos y es especialmente útil en entornos educativos o empresariales, donde no todos los usuarios del sistema deben tener acceso a todas las carpetas de la red.

Recurso compartido público

Un recurso compartido público permite que cualquier equipo de la red acceda a una carpeta sin necesidad de autenticarse con usuario y contraseña. Este tipo de recurso es útil para pruebas iniciales o para compartir información común, aunque no es recomendable en entornos reales de producción.

En primer lugar, creamos la carpeta que se va a compartir. Es habitual utilizar el directorio /srv para alojar los recursos ofrecidos por el servidor:

sudo mkdir -p /srv/samba/publica

A continuación, asignamos permisos amplios para evitar problemas de acceso durante las pruebas iniciales:

sudo chmod -R 777 /srv/samba/publica

El siguiente paso consiste en definir el recurso compartido dentro del archivo /etc/samba/smb.conf. Para ello, añadimos al final del archivo el siguiente bloque:

[publica]
           path = /srv/samba/publica
           browsable = yes
           read only = no
           guest ok = yes

Tras guardar los cambios, es necesario comprobar la configuración y reiniciar el servicio Samba:

testparm
        sudo systemctl restart smbd

Una vez completados estos pasos, el recurso compartido estará disponible para cualquier equipo de la red. Desde un sistema Windows, se podrá acceder escribiendo en el explorador de archivos:

\\IP_DEL_SERVIDOR\publica

Este primer recurso compartido sirve como base para comprobar que Samba funciona correctamente y que la conectividad de red es adecuada antes de pasar a configuraciones más restrictivas.

Recurso privado por usuario

En muchos entornos reales, cada usuario necesita disponer de una carpeta privada a la que solo él pueda acceder. En este tipo de configuración, el acceso al recurso compartido requiere autenticación y se limita a un único usuario.

Para este ejemplo, se creará una carpeta privada para el usuario alumno1. En primer lugar, se crea el directorio que se va a compartir:

sudo mkdir -p /srv/samba/privada_alumno1

A continuación, se asigna el propietario del directorio y se establecen permisos restrictivos:

sudo chown -R alumno1:alumno1 /srv/samba/privada_alumno1
        sudo chmod -R 700 /srv/samba/privada_alumno1

De este modo, solo el usuario propietario podrá acceder a la carpeta a nivel de sistema Linux.

El siguiente paso consiste en definir el recurso compartido en el archivo /etc/samba/smb.conf:

[privada_alumno1]
           path = /srv/samba/privada_alumno1
           valid users = alumno1
           browsable = no
           read only = no

Tras guardar los cambios, se valida la configuración y se reinicia el servicio:

testparm
        sudo systemctl restart smbd

Desde un equipo Windows, el usuario deberá introducir sus credenciales cuando intente acceder al recurso. El acceso se realizará escribiendo:

\\IP_DEL_SERVIDOR\privada_alumno1

Si las credenciales son correctas y los permisos están bien configurados, el usuario podrá acceder a su carpeta privada. En caso contrario, aparecerá un error de acceso denegado, lo que permite identificar problemas relacionados con permisos o autenticación.

Recurso compartido por grupos (y SGID)

En entornos reales (empresa o centro educativo) es habitual que los usuarios trabajen en equipos o departamentos y necesiten una carpeta compartida donde todos puedan leer y escribir. En Linux, esto se gestiona de forma eficiente mediante grupos y permisos de directorio. En Samba, además, podemos limitar el acceso a un recurso para que solo lo utilicen los miembros de un grupo concreto.

En este ejemplo crearemos un grupo llamado daw y añadiremos varios usuarios. Primero creamos el grupo:

sudo groupadd daw

A continuación añadimos los usuarios al grupo (por ejemplo, alumno1 y alumno2):

sudo usermod -aG daw alumno1
        sudo usermod -aG daw alumno2

Ahora creamos la carpeta que se va a compartir y la asignamos al grupo daw:

sudo mkdir -p /srv/samba/grupo_daw
        sudo chown -R root:daw /srv/samba/grupo_daw

Para que todo lo que se cree dentro de la carpeta herede automáticamente el grupo, utilizaremos el bit SGID en el directorio. Además, asignamos permisos para que el propietario y el grupo tengan control total:

sudo chmod -R 2770 /srv/samba/grupo_daw

El valor 2770 aplica:

  • 2 (SGID): los archivos y subcarpetas heredan el grupo daw.
  • 770: permisos completos para propietario y grupo; sin acceso para otros.

A continuación, definimos el recurso compartido en /etc/samba/smb.conf. Observa que se restringe el acceso al grupo mediante @daw:

[grupo_daw]
           path = /srv/samba/grupo_daw
           valid users = @daw
           read only = no
           browsable = yes
           force group = daw
           create mask = 0660
           directory mask = 2770

Los parámetros create mask y directory mask ayudan a que los ficheros y carpetas creados desde Windows respeten los permisos esperados. Tras guardar cambios, validamos y reiniciamos Samba:

testparm
        sudo systemctl restart smbd

Desde Windows, los usuarios del grupo podrán acceder al recurso mediante:

\\IP_DEL_SERVIDOR\grupo_daw

Este tipo de recurso compartido es ideal para carpetas de proyectos, departamentos o equipos de trabajo, ya que combina control de acceso y colaboración manteniendo el orden mediante grupos y permisos.

Permisos: Linux vs Samba (errores típicos)

Uno de los errores más habituales al trabajar con Samba es pensar que basta con configurar correctamente el archivo smb.conf para que un recurso funcione. Sin embargo, Samba nunca puede conceder más permisos de los que permite el propio sistema Linux.

Esto implica que el acceso a un recurso compartido depende siempre de dos niveles de control:

  • Permisos Linux: son los permisos reales del sistema de archivos (chmod, chown, chgrp).
  • Permisos Samba: son las reglas definidas en el recurso compartido (valid users, read only, write list, etc.).

Si alguno de estos dos niveles bloquea el acceso, el usuario no podrá entrar en la carpeta, aunque el otro esté correctamente configurado.

Errores habituales

  • El usuario existe en Samba pero no es propietario ni pertenece al grupo del directorio compartido.
  • Permisos del sistema demasiado restrictivos (700, 750) para un recurso que debería ser compartido.
  • El usuario no pertenece al grupo indicado en valid users = @grupo.
  • Cambios realizados en smb.conf sin reiniciar el servicio smbd.

Método recomendado de comprobación

Cuando un recurso no funciona correctamente, es recomendable seguir siempre el mismo orden de comprobación:

  1. Verificar propietario y grupo del directorio (ls -l).
  2. Comprobar permisos Linux (chmod y chown).
  3. Revisar la configuración del recurso en smb.conf.
  4. Validar la configuración con testparm.
  5. Reiniciar el servicio Samba.

Entender esta relación entre permisos Linux y Samba es fundamental para poder diagnosticar problemas de acceso de forma rápida y eficaz en entornos reales.

Acceso desde Windows y comprobaciones

Una vez configurados los recursos compartidos en el servidor Ubuntu con Samba, es necesario comprobar el acceso desde un equipo cliente. El escenario más habitual es el acceso desde un sistema Windows, ya que utiliza de forma nativa el protocolo SMB/CIFS.

Acceso directo desde el Explorador de archivos

Desde un equipo Windows, se puede acceder a un recurso compartido escribiendo en la barra de direcciones del Explorador de archivos la siguiente ruta:

\\IP_DEL_SERVIDOR\nombre_del_recurso

Si el recurso es público, el acceso se realizará directamente. En caso de tratarse de un recurso privado o restringido por grupos, Windows solicitará un nombre de usuario y una contraseña válidos.

Introducción de credenciales

Al introducir las credenciales, es importante utilizar el usuario y la contraseña definidos en Samba. En algunos casos puede ser necesario indicar el usuario de la siguiente forma:

IP_DEL_SERVIDOR\usuario

De este modo se evita que Windows intente autenticar al usuario con credenciales locales del propio equipo.

Mapear una unidad de red

Para facilitar el acceso al recurso compartido, es posible mapearlo como una unidad de red:

  • Abrir el Explorador de archivos.
  • Seleccionar Este equipo y pulsar en Conectar a unidad de red.
  • Elegir una letra de unidad y la ruta del recurso.
  • Introducir las credenciales cuando se soliciten.

Comprobaciones desde el servidor (opcional)

Desde el propio servidor Ubuntu se puede verificar la visibilidad de los recursos compartidos utilizando la herramienta smbclient:

smbclient -L //IP_DEL_SERVIDOR -U usuario

Este comando permite listar los recursos disponibles y comprobar si la autenticación funciona correctamente sin necesidad de utilizar un equipo Windows.

Si el acceso desde Windows es correcto y los permisos se comportan como se espera, se puede considerar que la configuración del recurso compartido es válida.

Diagnóstico y resolución de problemas

A pesar de seguir correctamente los pasos de configuración, es frecuente que aparezcan problemas de acceso a los recursos compartidos. En estos casos, es fundamental aplicar un método de diagnóstico ordenado que permita localizar el origen del fallo de forma rápida.

Comprobación de la configuración

El primer paso debe ser siempre verificar que el archivo de configuración de Samba no contiene errores de sintaxis:

testparm

Si se detecta algún error, este comando indicará la línea exacta donde se encuentra el problema, lo que evita reiniciar el servicio con una configuración incorrecta.

Estado del servicio Samba

Es importante comprobar que el servicio se encuentra activo y funcionando:

systemctl status smbd

En caso de que el servicio no arranque correctamente, se pueden consultar los registros del sistema:

journalctl -u smbd --no-pager

Comprobación de red y puertos

Samba utiliza principalmente los puertos 139 y 445. Para comprobar que el servicio está escuchando en los puertos adecuados se puede ejecutar:

sudo ss -tulpn | grep -E "smbd|:139|:445"

Si se está trabajando en una máquina virtual, es necesario asegurarse de que la configuración de red (NAT, adaptador puente, etc.) permite la comunicación entre el cliente y el servidor.

Problemas más frecuentes

  • Permisos incorrectos en el sistema de archivos Linux.
  • Usuario no dado de alta en Samba mediante smbpasswd.
  • Usuario no incluido en el grupo correspondiente.
  • Servicio Samba no reiniciado tras modificar smb.conf.
  • Problemas de red o firewall.

Aplicando estas comprobaciones de forma sistemática, es posible identificar y resolver la mayoría de problemas habituales al trabajar con Samba en Ubuntu Server.

Ejemplos prácticos guiados

A continuación se presentan varios ejemplos prácticos para aplicar de forma guiada la compartición de archivos en red con Samba en Ubuntu Server. Los casos plantean situaciones reales de administración de un servidor: recursos públicos, privados y compartidos por grupos, combinando configuración Samba y permisos Linux.

Ejemplo 1: Crear un recurso compartido público para pruebas

Objetivo: comprobar el correcto funcionamiento de Samba creando un recurso compartido accesible sin autenticación desde un equipo Windows.

  1. Crear el directorio a compartir:
    
            sudo mkdir -p /srv/samba/publica
                    
  2. Asignar permisos amplios (solo para pruebas):
    
            sudo chmod 777 /srv/samba/publica
                    
  3. Añadir el recurso al archivo /etc/samba/smb.conf:
    
            [publica]
               path = /srv/samba/publica
               browsable = yes
               read only = no
               guest ok = yes
                    
  4. Validar la configuración y reiniciar Samba:
    
            testparm
            sudo systemctl restart smbd
                    
  5. Acceder desde Windows mediante:
    
            \\IP_DEL_SERVIDOR\publica
                    

Este recurso permite verificar rápidamente que el servicio Samba funciona correctamente antes de aplicar configuraciones más restrictivas.

Ejemplo 2: Recurso privado por usuario

Objetivo: crear un recurso compartido accesible únicamente por un usuario concreto, utilizando autenticación mediante Samba.

  1. Crear el directorio privado:
    
            sudo mkdir -p /srv/samba/privada_alumno1
                    
  2. Asignar propietario y permisos:
    
            sudo chown alumno1:alumno1 /srv/samba/privada_alumno1
            sudo chmod 700 /srv/samba/privada_alumno1
                    
  3. Definir el recurso en smb.conf:
    
            [privada_alumno1]
               path = /srv/samba/privada_alumno1
               valid users = alumno1
               browsable = no
               read only = no
                    
  4. Reiniciar el servicio y acceder desde Windows introduciendo credenciales.

Este tipo de recurso es habitual para carpetas personales o espacios privados dentro de un servidor de red.

Ejemplo 3: Recurso compartido por grupos (trabajo colaborativo)

Objetivo: permitir que varios usuarios trabajen de forma conjunta sobre una carpeta compartida, manteniendo el control de acceso mediante grupos.

  1. Crear el grupo de trabajo:
    
            sudo groupadd proyecto
                    
  2. Añadir usuarios al grupo:
    
            sudo usermod -aG proyecto alumno1
            sudo usermod -aG proyecto alumno2
                    
  3. Crear la carpeta y asignar grupo:
    
            sudo mkdir -p /srv/samba/proyecto
            sudo chown root:proyecto /srv/samba/proyecto
            sudo chmod 2770 /srv/samba/proyecto
                    
  4. Configurar el recurso en smb.conf:
    
            [proyecto]
               path = /srv/samba/proyecto
               valid users = @proyecto
               read only = no
               force group = proyecto
               create mask = 0660
               directory mask = 2770
                    

El uso del bit SGID garantiza que todos los archivos creados mantengan el grupo correcto, facilitando el trabajo colaborativo.

Ejemplo 4: Comprobación y diagnóstico de errores de acceso

Objetivo: identificar el origen de un problema de acceso a un recurso compartido.

  1. Verificar permisos Linux:
    
            ls -ld /srv/samba/proyecto
                    
  2. Comprobar la pertenencia a grupos:
    
            groups alumno1
                    
  3. Validar la configuración de Samba:
    
            testparm
                    
  4. Revisar el estado del servicio:
    
            systemctl status smbd
                    

Este procedimiento sistemático permite localizar rápidamente si el fallo se encuentra en los permisos, en la configuración o en el servicio.

Ejercicio práctico final – Compartición de archivos con Samba

En este ejercicio individual se simula la administración de un servidor Ubuntu Server que ofrece recursos compartidos a distintos usuarios de una empresa mediante Samba.

El alumnado deberá realizar el ejercicio en su máquina virtual y entregar en Aules las capturas de pantalla solicitadas como justificación.

Contexto

La empresa dispone de un servidor de archivos centralizado al que acceden distintos empleados desde equipos Windows.

Usuarios y grupos

  1. Crear un grupo llamado proyecto.
  2. Crear dos usuarios: empleado1 y empleado2.
  3. Añadir ambos usuarios al grupo proyecto.

Recurso compartido por grupo

  1. Crear el directorio /srv/samba/proyecto.
  2. Asignar propietario root y grupo proyecto.
  3. Configurar permisos para permitir trabajo colaborativo.
  4. Definir el recurso Samba restringido al grupo proyecto.

Recurso privado

  1. Crear un recurso privado para empleado1.
  2. Configurar permisos y acceso mediante Samba.

Comprobaciones obligatorias (capturas)

  • Salida de ls -ld de los directorios compartidos.
  • Fragmento de smb.conf con los recursos definidos.
  • Acceso correcto desde Windows (captura).
  • Salida de testparm.

Entrega

El alumnado deberá subir a Aules un único documento PDF o ZIP con las capturas claramente identificadas.

Test del Tema

Comprueba lo que has aprendido realizando el TEST DEL TEMA

Ejercicios

Comprueba lo que has aprendido realizando los EJERCICIOS DEL TEMA