Diferencia entre revisiones de «SAMBA»
Sin resumen de edición |
|||
Línea 110: | Línea 110: | ||
<youtube>https://www.youtube.com/watch?v=yL3KoJlTeZ4</youtube> | <youtube>https://www.youtube.com/watch?v=yL3KoJlTeZ4</youtube> | ||
== Usando cockpit == | |||
Primero instalamos el paquete correspondiente | |||
<code>sudo dnf install cockpit-file-sharing</code> | |||
Y reiniciamos el servicio: | |||
<code>sudo systemctl restart cockpit</code> | |||
Ahora solo hace falta acceder con el navegador web la IP y puerto correspondiente, por ejemplo: | |||
<code><nowiki>https://192.168.100.241:9090</nowiki></code> | |||
Al acceder nos pedirá añadir a nuestro fichero '''/etc/samba/smb.conf''' la línea en la sección '''[global]''': | |||
<code>include = registry</code> | |||
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. |
Revisión del 11:21 10 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
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.