Diferencia entre revisiones de «SAMBA»

De La Wiki de KiVi
 
Línea 56: Línea 56:


valid users = @Grupo1      ## Y de los usuarios del grupo especificado
valid users = @Grupo1      ## Y de los usuarios del grupo especificado
read list = guest, nobody    ##los usuarios invitados y no conocidos solo podrías leer y no modificar.


create mask = 664                ## Especifico la mascara de permisos para los usuarios UNIX
create mask = 664                ## Especifico la mascara de permisos para los usuarios UNIX

Revisión actual - 13:24 30 abr 2024

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

read list = guest, nobody ##los usuarios invitados y no conocidos solo podrías leer y no modificar.

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

Usando cockpit

Primero instalamos el paquete correspondiente

sudo dnf install cockpit-file-sharing

Y reiniciamos el servicio:

sudo systemctl restart cockpit

Ahora solo hace falta acceder con el navegador web la IP y puerto correspondiente, por ejemplo:

https://192.168.100.241:9090

Al acceder nos pedirá añadir a nuestro fichero /etc/samba/smb.conf la línea en la sección [global]:

include = registry

Esta entrada cambia el tipo de configuración a un registro compatible con Windows y que se administra por base de datos de cockpit y no tiene en cuenta la configuración del fichero de configuración del servidor.