Compartir recursos con Windows con SAMBA

Aun con el posible chiste que resulte el nombre, SAMBA permite a usuarios de Windows y otros clientes, conectar con ficheros y directorios compartidos desde un servidor LInux. Esto implementa en el servidor un protocolo SMB ( Server Message Block ).

En esta entrada explico cómo compartir un directorio o recurso de manera sencilla con otros equipos de la red.

Instala y permite Samba

Para hacer la instalación ejecutamos:

sudo dnf install samba
sudo systemctl enable smb --now
firewall-cmd --get-active-zones
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba
sudo firewall-cmd --reload

Con esto instalamos el servicio, lo habilitamos en el inicio y añadimos la norma al cortafuegos.

Compartiendo un directorio

Podemos compartir un directorio por consola editando el fichero de configuración o utilizando la interficie web Cockpit.

Por consola

El proceso más excato siempre será por el terminal, primero asignaremos un usuario samba, para ello, suponemos que tenemos el usuario «suport» y queremos que tanga acceso a un directorio desde su equipo windows. Primero lo crearemos con:

sudo smbpasswd -a suport

Le asignamos la contraseña y pasamos a crear el directorio compartido:

sudo mkdir -p /srv/Datos/Compartido

Con esto creamos el directorio «Datos» dentro de /srv, el directorio que, por normativa, se refiere a los recursos de servicio.

Ahora le damos permisos al SELinux para poder modificar y aplicar las normas de recursos samba:

sudo semanage fcontext --add --type "samba_share_t" "/srv/Datos(/.*)?"

NOTA- SELinux és un gestor de permisos de Fedora y otras distribuciones muy potente y estricto creado por la NSA.

Por último, aplicamos de manera automática esta norma:

sudo restorecon -R /srv/Datos

El fichero por defecto de configuración de SAMBA es:

/etc/samba/smb.conf

Y un ejemplo de directorio compartido:

[Compartido]                        ## Nombre que se muestra del recurso compartido
comment = Compartido ## Comentario opcional
path = /srv/Datos/Compartido ## Ruta del directorio compartido
read only = No ## Especificacmos que NO es de solo lectura
writeable = Yes ## Especifiquemos que SI se puede escribir dentro
browseable = Yes ## Indica que es visible al explorador
guest ok = No ## Ningún usuario que NO esté validado en el sistema puede acceder
printable = no ## Similar al valor anterior, no se mostraría en pantalla
write ok = true ## Similar al valor "writeable"
force create mode = 664 ## Le fuerzo el modo de creación de ficheros a los clientes que se conecten
force directory mode = 775 ## Lo mismo para la creación de directorios
force group = Grupo1 ## Fuerzo el uso del directorio a un grupo
valid users = @Grupo1 ## Y de los usuarios del grupo especificado
create mask = 664 ## Especifico la mascara de permisos para los usuarios UNIX
vfs objects = recycle ## Habilito la papelera de reciclaje
recycle:repository = /srv/Datos/PapeleraC ## Ubico la papelera de este recurso
recycle:exclude = *.tmp *.temp *.o ## Exclusión de los ficheros que NO se reciclan
recycle:versions = Yes ## Acepto versiones diferentes de la papelera
recycle:keeptree = Yes ## Conserva la información del arbol de directorios.

Siempre que añadamos alguna configuración, debemos reiniciar o recargar el servicio:

sudo systemctl restart smb

Compartiendo con varios usuarios

Ya hemos visto que hemos compartido un directorio con un usuario y que, además, hemos añadido unas líneas para forzar el directorio con un grupo de usuario llamado «Grupo1».

 

 Recordemos que un usuario SAMBA también es un usuario de sistema, en lo que a permisos se refiere. Por lo que también se refleja en los grupos. Crearemos un grupo en el sistema y añadiremos al usuario.
sudo groupadd Grupo1
sudo usermod -G Grupo1 suport

Para hacerlo más práctico, creamos otros dos usuarios, uno que forme parte del grupo y otro que no.

sudo useradd usuario1
sudo useradd usuario2
Con esto hemos creado el usuario en el sistema.
sudo smbpasswd -a usuario1
sudo smbpasswd -a usuario2
Ahora lo añadimos al grupo:
sudo usermod -G Grupo1 usuario1
 Y ya podemos comprobar que  usuario1 y suport pueden acceder al recurso «Grupo1» mientras que usuario2 no.

 Gestionando usuarios de Samba

Podemos modificar los usuarios con los comandos:
sudo smbpasswd usuario1 # para cambiar la contraseña
sudo smbpasswd -x usuario1 # para eliminar el usuario
sudo userdel -r usuario1 #para eliminarlo también del sistema.

 

Incidencias y logs

Como buenos administradores, tenemos que buscar la razón por la que el servicio no funcione correctamente. Todos los ficheros de informe generados por samba están en /var/log/samba. Para fer el registro del servicio en tiempo real podemos ejecutar.
tail -f /var/log/samba/log.smbd
Podemos incrementar el detalle de log modificando  el fichero :
sudo nano /etc/samba/smb.conf
y en la sección [global] cambiamos el valor:
[global]
   loglevel =5
Y reiniciamos el servicio:
sudo systemctl restart smb
Podemos saber las conexiones a samba con:
sudo smbstatus
Podemos listar los usuarios de la base de datos de samba con:
sudo pdbedit -L
Y una de las causas más comunes que un usuario no puede acceder a un recurso, o puede acceder, pero no ejecutarlo, es debido a la configuración de SELinux. Para comprobar el estado de dicho directorio podemos listar con:
ls -ldZ /srv/Datos/Compartido
Si nos devuelve el valor:
unconfined_u:object_r:samba_share_t:s0 unconfined_u:object_r:samba_share_t:s0 /srv/Datos/Compartido

Es que no ejecutamos el comando semanage como se explica en las primeras líneas y se debe definir el contexto y volver a ejecutar el «restorecon -R» sobre el directorio de nuevo.

Visualizar las conexiones compartidas con:

sudo smbstatus

 


Publicado

en

, , , ,

por