educación, informática y demás

Samba, Servicios en Red

Compartiendo recursos en entornos heterogeneos. SMB/CIFS, ¡Samba!

Tenemos toda la documentación necesaria para llevar a cabo este y otros casos prácticos sobre recursos compartidos entre Windows y GNU/linux en el apartado dedicado a Samba en este sitio web.

1. Accediendo desde Debian 11 a un recurso compartido en Windows

Vamos a lanzar las dos máquinas virtuales, la de Windows y la de GNU/Linux. Lo primero que tenemos que comprobar es que ambas máquinas están conectadas entre sí.

Lo primero que deberiamos hacer es asegurarnos de conocer las direcciones IP de cada equipo. Vamos a ver la dirección IP del equipo con GNU/Linux Debian.

Vemos la dirección del equipo con GNU/Linux usando el comando ip a

Comprobamos la dirección IP del sistema Windows.

Vamos a comprobar que tienen conexión entre sí,para ello usamos el comando ping.

Sabemos que el sistema GNU/Linux tiene conexión con el sistema Windows. No haría falta realizar la comprobación inversa, pero lo vamos a comprobar en un momento.

Compartiendo un directorio en red en Windows

Una vez comprobada la conexión, en Windows, crea un directorio llamado shared en C:\ y compártelo en red de forma que cualquier usuario pueda acceder a dicho recurso para realizar operaciones de lectura y escritura con el nombre compartido.

Creamos el directorio C:\Shared

Compartimos el directorio C:\Shared con el nombre compartido de forma que cualquier usuario pueda acceder para realizar cualquier tipo de operación.

Accedemos Uso compartido avanzado…

Configuramos el recurso compartido

Comprueba que realmente está compartido, para ello en Windows, accede al explorador de windows y trata de acceder al recurso compartido con su URL: \\nombreDeTuEquipo\compartido

Si no te acuerdas del nombre de tu equipo, puedes usar la dirección IP: \\192.168.100.20\compartido

Si no sale, mal asunto… prueba a escribir en la barra de direcciones \\localhost

Una vez compartido el recurso, trata de acceder a dicho recurso compartido desde GNU/Linux Debian. Para ello, ejecuta el navegador de sistemas de ficheros de Debian y en la barra de direcciones escribe la siguiente URL:

smb://192.168.100.20/compartido

Podríamos buscar en el navegador de sistemas de ficheros, en otras ubicaciones:

Nos pide un usuario de Windows, vamos a usar la cuenta de alumno de windows.
Ahí tenemos los recursos compartidos en el equipo Alumno-PC.

Los recursos cuyo nombre terminan por $ en Windows no se muestran, están ocultos. Sin embargo, cuando accedemos a un sistema Windows desde un Unix-Like con Samba si nos muestra estos recursos compartidos.

Si intentamos acceder con el usuario invitado, no nos dejará. Posiblemente que tengamos el usuario invitado deshabilitado tiene algo que ver en esto

Vamos a acceder, de nuevo, con el usuario alumno de windows, pero esta vez vamos a recordar la contraseña hasta salir de la sesión.

Conectando con el usuario alumno de Windows
Hemos creado un directorio y un fichero de texto plano

¿Dónde se han creado el directorio y el fichero? Estarán en el recurso compartido en Windows, \\192.168.100.20\Compartido, que no es más que el directorio C:\Shared. Vamos a echar un ojo al contenido de este directorio en Windows.

Contenido del recurso compartido \\192.168.100.20\compartido desde Windows
Contenido del directorio C:\Shared

Hemos visto como podemos compartir un directorio en red de forma simple desde Windows y acceder a dicho recurso compartido tanto desde Windows como desde GNU/Linux.

No obstante, cuando hemos accedido desde GNU/Linux no hemos usado una URL. Vamos a usarla.

Supongamos que estamos en nuestro directorio personal con el navegador de sistemas de ficheros, por ejemplo Nautilus. Si pulsamos el acelerador de teclado CTRL+L podemos reditar la barra de direcciones.

Barra de direcciones del navegador de sistema de ficheros

Ahora escibimos la URL: smb://DirecciónEquipo/Recurso, que en nuestro caso será: smb://192.168.100.20/Compartido.

Escribimos la URL del recurso compartido.
Rellenamos el cuadro de dialogo de credenciales

¡Aquí estamos de nuevo! Acceso al recurso compartido 🙂

2. Creando un marcador de un recurso compartido en GNU/Linux

Para evitar tener que escribir una y otra vez una URL a la que accedemos de forma habitual, podemos crear un marcador para facilitarnos el acceso. Para ello, hacemos clic sobre el cuadro de selección que aparece junto a la barra de direcciones.

Creamos un marcador
Marcador del recurso compartido en 192.168.100.20

Si queremos queremos, podemos renombrar el marcador.

Vamos a renombrar el marcador con el nuevo nombre: Compartido
Nuevo nombre para el marcador

Nuevo nombre establecido

Vamos a desconectarnos del recurso compartido. Para ello, tan solo tenemos que hacer clic sobre el botón del icono de expulsar.

Desconectamos la conexión con el recurso compartido

Ahora, si quisieramos conectarnos de nuevo tan solo tenemos que hacer click en el marcador, que por cierto si ponemos el cursor del ratón sobre el mismo, nos mostrará una ayuda contextual dónde aparece la URL del recurso.

URL del recurso
Accediendo a través del marcador

3. Permitiendo accesos anónimos – Problemas de seguridad!

Hemos visto que no podemos acceder con un usuario anónimo a recursos compartidos. Sin embargo, en la configuración de permisos del recurso «compartido» establecimos que Todos los usuarios podrían acceder para realizar cualquier operación. ¿Qué puede estar fallando?

La cuenta Invitado está deshabilitada por defecto
Al estar deshabilitada la cuenta invitado, el acceso a recursos compartidos debe hacerse con usuarios del sistema

Vamos a probar a acceder con un usuario anónimo.

Según esta configuración, seguramente podemos acceder como anónimo al recurso compartido, no obstante si accedemos desde el navegador de sistema de ficheros, no sabemos si está accediendo con el usuario alumno, que hemos guardado las credenciales o no.

Tenemos dos opciones, cerramos sesión e iniciamos de nuevo y probamos o instalamos la aplicación smbclient que nos permitirá conectarnos a recursos compartidos desde la terminal.

Vamos a instalar smbclient.

Actualizamos la lista de paquetes
Instalamos smbclient

Lo de invitados lo vamos a investigar… O:)

4. Configurando permisos: Locales + Remotos = Permisos Efectivos

5. Compartiendo recursos desde GNU/Linux: Samba

Para poder compartir recursos en GNU/Linux o Unix-Likes necesitamos instalar un software especial, un servidor del protocolo SMB/CIFS que es el conjuntos de protocolos (realmente hoy en día solo CIFS) que utiliza Microsoft para compartir directorios e impresoras en red.

Instalamos samba en nuestro sistema. Este paquetes instalará un servidor smb en nuestro sistema. Por tanto, si es un servidor tendrá un servicio o demonio en ejecución que será el encargado de gestionar las conexiones SMB/CIFS sobre este equipo.

Si tenemos un servicio, el programa que vamos a utilizar para gestionar el servicio será systemctl (service antiguamente).

Vamos a ver el estado del servicio smbd.

En la captura aparece smbd.service porque he usado tabulador para autocompletar.

Fichero de configuración de Samba

Como todo servicio, samba se configura a través de uno o varios ficheros de configuración. Este fichero estará dentro de algún subdirectorio dentro de /etc.

Si saber muy bien dónde está, podemos intuirlo mirando en /etc/ y usando el tabulador.

El fichero de configuración de samba está en /etc/samba/smb.conf. Este fichero contiene una configuración predeterminada en la que podemos encontrar muchos comentarios que nos ayudarán a entender ciertas configuraciones.

Podemos resaltar la sintáxis seleccionando como lenguaje sh.

Las líneas que comienzan por una # o por un ; son comentarios. Es decir, el servidor no las va a tener en cuenta

Comentarios en el fichero de configuración

En el fichero de configuración básicamente os podemos encontrar secciones, parámetros de configuración y comentarios.

Un parámetro de configuración configura un elemento dentro de samba. Cada parámetro de configuración estará dentro de una sección.

Ejemplo de parámetro de configuración

Una sección permite establecer una configuración para un elemento concreto. De hecho, para configurar un recurso compartido, utilizamos una sección. Toda sección debe tener un nombre que se establece rodeando dicho nombre entre corchetes. La sección empieza cuando se declara, poniendo el nombre entre corchetes y termina cuando se encuentre una nueva sección o termine el fichero.

Sección predeterminada global

Existen varias secciones predeterminadas que tienen una función concreta, por ejemplo [Global] dónde se configura el comportamiento general del servidor Samba. Si no es una sección predeterminada, la sección indica un recurso compartido.

Cada sección puede contener varios parámetros de configuración que afectarán a dicha sección específica.

Todo como realmente se entiende es con la práctica.

Vamos a mostrar en nuestra terminal todas las secciones presentes en el fichero de configuración.

Mostramos todas las líneas que contengan un caracter [

Sin embargo se muestran también secciones comentadas. ¿Cómo podríamos mostrar solo las secciones activas en nuestro fichero de configuración? Quitando los comentarios

En una primera aproximación podríamos emplear:

Las cuatros secciones que aparecen en nuestro fichero de configuración por defecto son todas predeterminadas, es decir tienen una función específica.

  • global. Configuración global del servidor
  • homes. Directorios personales de los usuarios
  • printers. Impresoras compartidas en red
  • print$. Controladores de las impresoras compartidas en red

6. Compartiendo un recurso de forma sencilla

Vamos a compartir el directorio /srv/ftp con el nombre ftp para que cualquier usuario pueda acceder para realizar operaciones de solo lectura.

Primero creamos la sección que representará al recurso compartido. Como sabemos el nombre de la sección será el nombre del recurso compartido.

Configuración de sección ftp: recurso compartido ftp.

Para que los cambios surtan efecto en el servidor, tenemos que guardar y reiniciar el servidor smbd.

Hemos reiniciado el servidor

Se supone que, ahora mismo existe un recurso compartido llamado ftp en nuestro equipo 192.168.100.250 que debería ser accesible por todos los usuarios de nuestra red. Vamos a Windows.

Recursos compartidos con SMB/CIFS en el sistema 192.168.100.250

Si hacemos doble clic sobre ftp o escribimos la ruta completa \\192.168.100.250\ftp accederemos al recurso compartido ftp, que no es otra cosa que el directorio /srv/ftp que es el directorio raíz público del FTP.

Tenemos acceso al directorio raíz público del FTP desde una red entre iguales con el protocolo SMB/CIFS

¿Qué pasará si intentamos escribir (subir un fichero o crear un directorio) dentro del directorio anonimos. Recuerda, el directorio anonimos lo creamos para que cualquier usuario anónimo pudiera subir ficheros desde el ftp y crear directorios.

Vamos a intentar crear un directorio

No nos deja :_(

Vamos a ver los permisos del directorio /srv/ftp/anonimos

Solo el usuario ftp puede escribir.

No pasa nada, vamos a cambiar los permisos para que cualquier usuario pueda acceder para lectura y escritura.

Vamos a intentar escribir. ¡Nos sigue sin dejar!

Seguimos sin poder escribir

El problema, está en la configuración de Samba. En samba, para esta sección hemos configurado read only = yes. Por tanto, a través de Samba, las conexiones que pasen por samba sobre este recurso compartido, no podrán realizar operaciones de escritura, solo lectura.

Si queremos permitir operaciones de escritura, tenemos que configurar read only = no, guardar y reiniciar.

Cambiamos el parámetro read only

Reiniciamos el servidor

Nos conectamos

Ahora si podemos escribir

Vamos a ver los permisos, propietario y grupo del directorio creado.

Directorio creado desde Windows. Usuario anónimo nobody, grupo anónimo nogroup.

Dejar una respuesta