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:
smbdynmbd. - 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.confsin reiniciar el serviciosmbd.
Método recomendado de comprobación
Cuando un recurso no funciona correctamente, es recomendable seguir siempre el mismo orden de comprobación:
- Verificar propietario y grupo del directorio (
ls -l). - Comprobar permisos Linux (
chmodychown). - Revisar la configuración del recurso en
smb.conf. - Validar la configuración con
testparm. - 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.
-
Crear el directorio a compartir:
sudo mkdir -p /srv/samba/publica -
Asignar permisos amplios (solo para pruebas):
sudo chmod 777 /srv/samba/publica -
Añadir el recurso al archivo
/etc/samba/smb.conf:[publica] path = /srv/samba/publica browsable = yes read only = no guest ok = yes -
Validar la configuración y reiniciar Samba:
testparm sudo systemctl restart smbd -
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.
-
Crear el directorio privado:
sudo mkdir -p /srv/samba/privada_alumno1 -
Asignar propietario y permisos:
sudo chown alumno1:alumno1 /srv/samba/privada_alumno1 sudo chmod 700 /srv/samba/privada_alumno1 -
Definir el recurso en
smb.conf:[privada_alumno1] path = /srv/samba/privada_alumno1 valid users = alumno1 browsable = no read only = no - 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.
-
Crear el grupo de trabajo:
sudo groupadd proyecto -
Añadir usuarios al grupo:
sudo usermod -aG proyecto alumno1 sudo usermod -aG proyecto alumno2 -
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 -
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.
-
Verificar permisos Linux:
ls -ld /srv/samba/proyecto -
Comprobar la pertenencia a grupos:
groups alumno1 -
Validar la configuración de Samba:
testparm -
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
- Crear un grupo llamado proyecto.
- Crear dos usuarios: empleado1 y empleado2.
- Añadir ambos usuarios al grupo proyecto.
Recurso compartido por grupo
- Crear el directorio /srv/samba/proyecto.
- Asignar propietario root y grupo proyecto.
- Configurar permisos para permitir trabajo colaborativo.
- Definir el recurso Samba restringido al grupo proyecto.
Recurso privado
- Crear un recurso privado para empleado1.
- 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.
