Pues eso, como reza el largo título y para ser exactos la versión 18.04.2 en ambos equipos (sí, Lubuntu es hijo de Ubuntu y la madre de Ubuntu es Debian). Para mayores detalles acerca de qué es un Sistema de Archivos de Red pueden investigar en la Wikipedia, allí hay abundante información, allí está toda la teoría necesaria, aquí vamos directamente a la práctica.
Tabla de contenido:
Entorno de red
Trabajaremos en una red de área local donde la puerta predeterminada para conectar a Internet en ambas máquinas es 192.168.1.1, el servidor será 192.168.1.47 (KEVIN) y el cliente será 192.168.1.49 (KAOS).
Trabajo en el servidor
Como siempre usaremos usuarios que tienen derecho de ejecutar órdenes de superusuario, en nuestro caso jimmy, todo esto lo veremos a lo largo de las capturas de pantalla que publicamos acá. Primero actualizamos los repositorios, instalamos cualquier paquete disponible (de ser el caso) y a continuación comenzamos a instalar el software NFS:
sudo apt get update sudo apt upgrade sudo apt install nfs-kernel-server
Trabajo en el cliente
Desde el servidor nos conectamos por medio de ssh y ejecutamos un procedimiento parecido:
ssh jimmy@192.168.1.49 sudo apt get update sudo apt upgrade sudo apt install nfs-common
Creando los directorios en el servidor
Pero primero debemos de tener muy en cuenta el tema de los derechos de propietario de los archivos: no se pueden aplicar derechos de superusuario para ambas máquinas porque puede ocasionar problemas de seguridad. Teniendo en cuenta eso, colocaremos los comentarios necesarios según sea el caso.
Creando una carpeta para compartir de propósito general
Sirve para compartir ficheros sin el problema de acceso con derechos de superusuario; en el servidor:
sudo mkdir /var/nfs/general -p ls -la /var/nfs/general sudo chown nobody:nogroup /var/nfs/general ls -la /var/nfs/general
Compartiendo una carpeta personal
Haremos esto compartiendo la carpeta imágenes del usuario jimmy en el servidor: no tendremos que crear nada, ni cambiar derechos de usuario sobre ficheros porque vamos a realizar una configuración especial en el NFS: en el servidor dicha carpeta es /home/jimmy/Imágenes
Ajustando el muro de fuego de Ubuntu
Debemos permitir únicamente el acceso del cliente a nuestro servidor por medio del muro de fuego («firewall»), en el servidor:
sudo ufw allow from 203.0.113.24 to any port nfs sudo ufw status
Configurando y reiniciando el servicio NFS en el servidor
Como ya tenemos las carpetas listas y el muro de fuego listo para comenzar a trabajar, editamos el fichero:
sudo nano /etc/exports
y le agregamos lo siguiente:
/var/nfs/general 192.168.1.49(rw,sync,no_subtree_check) /home/jimmy/Imágenes 192.168.1.49(rw,sync,no_root_squash,no_subtree_check)
Como ven ya van dos reglas de seguridad de diferentes software: primero el muro de fuego solo permitirá conexiones de solamente una y solo una dirección IP y si eso llegara a fallar el NFS también trabajará de la misma manera. Por demás explicamos cada una de las propiedades asignadas:
- rw : derechos de escritura y lectura del cliente en el servidor (sobre la carpeta especificada en esa línea).
- sync : esto obliga al servidor a grabar en su disco duro antes de enviar fichero alguno al cliente (más seguro pero puede ser más lento, nos decantamos por la seguridad).
- no_subtree_check : esto evita que el servidor revise y sincronice los ficheros en el cliente constantemente, lo que otorga velocidad, sin embargo si en el cliente tienen un fichero abierto y se renombra ese mismo fichero en el servidor traería problemas, sin embargo los beneficios superan el riesgo.
- no_root_squash : de manera predeterminada NFS evita que el cliente ejecute acciones de superusuario sobre los archivos, con esta orden deshabilitamos ese comportamiento para la carpeta Imágenes .
Por último reiniciamos el servicio NFS para que tome la nueva configuración: «sudo systemctl restart nfs-kernel-server»
Nota: si reciben un mensaje «Job for nfs-server.service canceled» es debido a que hayamos escrito mal la ruta del las carpetas que vamos a «compartir».
Creando puntos de montaje y montando directorios en el cliente
En el cliente haremos dos carpetas para recibir las respectivas carpetas del servidor llamadas: general e Imágenes y las montamos desde el servidor:
sudo mkdir -p /nfs/general sudo mkdir -p /nfs/home/jimmy/Imágenes sudo mount 192.168.1.47:/var/nfs/general /nfs/general sudo mount 192.168.1.47:/var/nfs/home/jimmy/Imágenes /nfs/home/jimmy/Imágenes
La manera más práctica de confirmar de que estamos conectados es corriendo la orden df -h, en la figura anterior resaltamos las vías de conexión. También podemos visualizar cuánto ocupan cada una de nuestras carpetas «compartidas» con el comando du y los parámetros -s para un resumen de uso y -h para una salida legible (ambos -sh):
Hasta aquí ya logramos nuestro cometido pero ahora hagamos unas prácticas adicionales.
Comprobando los derechos de usuario
Creando un fichero en el cliente en la carpeta «general»
sudo touch /nfs/general/general.test ls -l /nfs/general/general.test
Creando un fichero en el cliente en la carpeta «Imágenes»
sudo touch /nfs/home/jimmy/Imágenes/Imágenes.test ls -l /nfs/home/jimmy/Imágenes/Imágenes.test
Como vemos en la siguiente figura, en ambos casos hemos creado los ficheros con el comando sudo para que tengan como propietario al superusuario, sin embargo en el primer caso no lo hace y en el segundo caso sí:
Haciendo el montaje permanente en el cliente
Deberemos editar el fichero /etc/fstab para que cada vez que arranque el equipo cliente se conecte al servidor:
sudo nano /etc/fstab
y agregar lo siguiente:
192.168.1.47:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0 192.168.1.47:/home/jimmy/Imágenes /nfs/home/jimmy/Imágenes nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Si en algún momento queremos dejar de compartir:
sudo umount /nfs/general sudo umount /nfs/home/jimmy/Imágenes
El tema de la seguridad, de nuevo
Este ejemplo lo hicimos en una red de área local porque los datos que transmitamos entre ambas máquinas no están cifrados en modo alguno. Con una red privada virtual o por SSH podremos conectar con máquinas que estén en el Internet como si fueran una red de área local pero el desempeño y la velocidad se ven degradados. Una mejor opción es utilizar SSHFS, el cual más lento como NFS pero más rápido que SSH o VPN.
Fuentes consultadas
En idioma castellano
En idioma inglés
- «How To Set Up an NFS Mount on Ubuntu 18.04» by Melissa Anderson and Mark Drake.
- «How To Use SSHFS to Mount Remote File Systems Over SSH» by Paul White.