Compartir archivos con NFS en servidor Ubuntu y cliente Windows 10

En esta breve guía hablaremos sobre como montar una unidad compartida que se encuentre en una instalación de Ubuntu que será el servidor con la unidad NFS (Network File System), en una unidad de red accesible desde Windows 10 quien jugará el rol de cliente.

nfs shared folder

Instalación y configuración en Ubuntu como servidor

En el caso de Debian remover sudo en cada comando.

Instalamos el paquete ‘nfs-kernel-server’:

sudo apt install nfs-kernel-server

Opciones de la unidad

Luego editamos el archivo ‘/etc/exports’:

sudo nano /etc/exports

El archivo contiene comentarios como los siguientes:

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).

Agregamos una linea al final con lo siguiente:

/home/user/folder 192.168.0.10(rw,sync,all_squash,anonuid=1000,anongid=1000)

En el ejemplo anterior /home/user/folder es la carpeta que será compartida. Después la IP del cliente o clientes. Se muestra solo una IP estatica pero podemos usar 192.168.0.1/24 que abarca desde la IP 192.168.0.1 hasta 192.168.0.254.

Las opciones de montaje están entre paréntesis.

rw

es para permitir lectura y escritura.

sync

Es opcional en caso de que queramos un poco mas de integridad de archivos y evitar pérdida de datos, sacrificando un poco de rendimiento.

all_squash

Esta opción degrada los permisos de los archivos creados desde el cliente al usuario nobody. Por ejemplo si en Windows 10 estoy como Administrador y creó un nuevo archivo, este pertenecera al usuario nobody.

anonuid

El ID del usuario nobody, o en un caso específico el de cualquier usuario.

anongid

El ID del grupo del usuario nobody.

En este caso establecí anonuid y anongid a 1000, que viene siendo el usuario que es dueño de la carpeta /home/user/folder para conservar permisos de ejecución y escritura.

Con los cambios realizados guardamos el archivo CTRL + O, luego Enter, y entonces cerramos con CTRL + X.

Reiniciamos el servidor NFS:

sudo service nfs-kernel-server restart

Con esto quedará lista la configuración en el servidor.

Instalación y configuración del cliente en Windows 10

Windows viene con un cliente por defecto pero necesita ser instalado.

La forma más sencilla de instalarlo es usar el buscador y escribir ‘Panel de control’, ya que Windows 10 tiene varios paneles modernos que solo ocultan las opciones más antiguas. Abrimos ‘Programas y características’ y en el panel izquierdo abrimos ‘Activar o desactivar las características de Windows’.

caracteristicas windows nfs

Marcamos la casilla ‘Servicios para NFS’ con sus dos descendientes ‘Cliente para NFS’ y ‘Herramientas administrativas’. Hacemos clic en Aceptar y después de un tiempo el cliente quedará instalado.

Montando la unidad de red

Para montar la unidad abrimos el ‘símbolo del sistema’ (no usar PowerShell). Usamos el comando:

mount -o anon \\192.168.0.20\home\user\folder k:

La IP 192.168.0.20 es la del servidor, segida del recurso compartido y luego una letra de unidad que se usará.

El mensaje El comando se completó correctamente. indicará que todo funcionó correctamente.

Permisos de escritura para el usuario anónimo

Normalmente y de manera predeterminada Windows no permite la escritura en este tipo de unidades con el usuario anónimo. Para habilitar la escritura tenemos que abrir el registro de Windows Regedit, y nos dirigimos hacia: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

Ahí crearemos un valor de DWORD (32-bits) con el nombre AnonymousUid con el valor ‘0’ con base ‘Decimal’. Luego creamos otro valor de DWORD (32-bits) con el nombre AnonymousGid con el valor ‘0’ con base ‘Decimal’.

Tenemos que reiniciar el equipo o el servicio ‘Cliente para NFS’.

windows regedit

Si seguimos todos los pasos anteriores y ya tenemos la unidad montada, abrimos el símbolo del sistema y ejecutamos el comando mount, aparecerá el montaje y en propiedades saldrá UID=0 y GID=0. Si aparece cualquier otro numero verificar todo el procedimiento anterior.

cmd comando mount

Notas: El procedimiento es prácticamente el mismo tanto en Ubuntu como en Debian, o cualquier otra variación como Kubuntu. No es necesario usar Ubuntu Server. La versión de NFS que se usará es la 3 con Ubuntu 18.04 - 64-bits y Windows 10.