Curso de Ubuntu 26.04 / Crear un recurso compartido Samba con acceso por grupo

Los recursos compartidos de Samba limitados deben configurarse con autenticación de usuarios, reglas de acceso a los recursos compartidos, permisos de directorios de Linux y restricciones de red al mismo tiempo. Esta práctica crea un LabShare en un nuevo servidor dedicado y prueba el alcance del acceso para usuarios permitidos y usuarios excluidos.

Definir servidor, cuentas y rutas de acceso

Samba comparte archivos utilizando el protocolo SMB (Server Message Block). En el Explorador de archivos de Windows se accede utilizando la dirección real del servidor, y en Linux se prueba con smbclient. No se expone SMB directamente a Internet, sino que se utiliza dentro de LAN confiables o de una VPN administrada.

Se usa una nueva VM de práctica que no tiene los nombres siguientes y la ruta /srv/ubuntu-share-lab. En un Samba que ya está en funcionamiento, primero se investigan la configuración global, las cuentas y los recursos compartidos existentes, y no se sobrescriben tal cual. La contraseña de Samba se administra por separado de la contraseña de inicio de sesión de Linux en esta configuración y primero debe existir la cuenta de Linux.

La documentación de control de acceso de Samba en Ubuntu explica la relación entre la base de datos de cuentas y los permisos de los recursos compartidos y del sistema de archivos.

Crear el grupo y las cuentas del laboratorio de Samba

sudo apt update
sudo apt install samba smbclient
sudo addgroup ubuntu-share-lab
sudo adduser --disabled-password --gecos "" --no-create-home --shell /usr/sbin/nologin --ingroup ubuntu-share-lab sharelab
sudo adduser --disabled-password --gecos "" --no-create-home --shell /usr/sbin/nologin sharedeny
sudo smbpasswd -a sharelab
sudo smbpasswd -a sharedeny
sudo install -d -m 2770 -o root -g ubuntu-share-lab /srv/ubuntu-share-lab
id sharelab
id sharedeny
ls -ld /srv/ubuntu-share-lab

Ejecute la preparación paso a paso y deténgase si falla una orden; compruebe la creación de las cuentas, el grupo y el directorio antes de continuar. En los dos comandos smbpasswd, ingrese interactivamente contraseñas de práctica distintas. No escriba la contraseña en la línea de comandos. sharelab debe estar en el grupo permitido y sharedeny no debe estar presente. El 2 del directorio ayuda a la herencia de grupo de nuevos elementos mediante setgid y 770 permite el acceso del propietario y grupo. No aplique chmod 777 a los datos existentes de manera indiscriminada.

Añadir sección de recurso compartido y verificar la sintaxis

backup_dir=$(sudo mktemp -d /root/samba-lab.XXXXXX)
sudo cp -a /etc/samba/smb.conf "$backup_dir/smb.conf"
printf "%s\n" "$backup_dir"
sudoedit /etc/samba/smb.conf

Compruebe que el directorio de respaldo se creó y que la copia terminó correctamente; si falla, deténgase. Registre su ruta y agregue la siguiente sección al final del archivo existente solo una vez. Si existe un recurso compartido con el mismo nombre, deténgase y elija un nombre nuevo. No borre las secciones [global] existentes ni otros recursos compartidos.

[LabShare]
    path = /srv/ubuntu-share-lab
    browseable = yes
    read only = no
    guest ok = no
    valid users = @ubuntu-share-lab
    create mask = 0660
    directory mask = 2770
sudo testparm -s
systemctl is-active smbd.service

Solo después de verificar el éxito de testparm y la configuración LabShare en la salida, vuelva a leer el smbd en ejecución con el siguiente comando. Si el servicio está inactivo, investigue primero en los registros la causa de la falla al iniciar. create mask es el límite superior de permisos, y no significa que todos los archivos nuevos deben tener necesariamente el mismo modo.

sudo smbcontrol smbd reload-config
sudo ss -lntp

Instalar smbclient en el servidor no instala la herramienta en el cliente. Compruebe que el servidor .20 y el cliente Linux autorizado .10 están en la misma red solo para el anfitrión del laboratorio de VirtualBox; ejecute la instalación siguiente en el cliente .10. Windows utiliza una ruta UNC (Universal Naming Convention) en el Explorador de archivos. El anfitrión Windows suele tener la dirección .1 y la regla de UFW siguiente autoriza únicamente a .10: una prueba desde Windows requiere una autorización de red adicional para su dirección real.

sudo apt update && sudo apt install smbclient

Probar permisos permitidos y denegados en un cliente real

El acceso directo a SMB utiliza TCP 445. En la práctica de gestión de UFW, solo se utiliza la siguiente regla de permiso cuando la dirección del cliente es realmente 192.168.56.10. Se mantiene el acceso SSH existente y la activación de UFW y políticas predeterminadas se sigue según el procedimiento previamente verificado. Si existen reglas de permiso amplias existentes, agregar reglas más específicas no las restringirá.

sudo ufw allow from 192.168.56.10 to any port 445 proto tcp
sudo ufw status numbered

En la terminal del cliente, cambie la dirección a la dirección real del servidor. En el explorador de archivos de Windows, la autenticación se realiza en la ruta UNC de la forma \\dirección_servidor\LabShare. La prueba solo en localhost del servidor no confirma el acceso de otros dispositivos ni el efecto del firewall.

smbclient //192.168.56.20/LabShare -U sharelab -c "ls"
smbclient //192.168.56.20/LabShare -U sharedeny -c "ls"

sharelab debe tener éxito en la consulta de la lista y sharedeny con la contraseña Samba correcta debe tener el acceso al recurso compartido denegado. No se considera que la restricción de grupos se haya verificado solo con un fallo de inicio de sesión por contraseña incorrecta. Suba un pequeño archivo nuevo con una cuenta permitida, descárguelo nuevamente y compárelo, y verifique por separado que la conexión se rechaza en redes no permitidas.

Prueba de escritura y reversión de cambios

lab_dir=$(mktemp -d)
printf "samba-lab\n" > "$lab_dir/check.txt"
cd "$lab_dir"
smbclient //192.168.56.20/LabShare -U sharelab -c "put check.txt check.txt; get check.txt downloaded.txt"
cmp check.txt downloaded.txt

Ejecute solo cuando el recurso compartido de práctica esté vacío y check.txt no exista. Si cmp tiene éxito sin salida, los contenidos transferidos son idénticos. Si ya existe un nombre, use un nombre único. Los fallos se investigan dividiéndolos en autenticación, permisos del recurso compartido, permisos de directorio, estado de montaje y registros de AppArmor.

Al interrumpir, solo se eliminarán este recurso compartido y esta regla de UFW, luego se realizará nuevamente la verificación de sintaxis y se leerán las configuraciones. Antes de eliminar nuevas cuentas o grupos, verifique que no haya otros usos o archivos propiedad de ellos, y el directorio compartido se conservará antes de organizarlo por separado. La restauración de una copia de seguridad completa de smb.conf solo se considerará después, cuando no haya otros cambios.