Capítulo 10: Instalar y configurar NFS en Ubuntu 14.04 LTS



10.5. Configurar el servidor NFS

Vamos a suponer que necesitamos compartir con los clientes dos carpetas del servidor: /home y /compartido. Los pasos que deberemos seguir son estos:

  • Crear la carpeta o las carpetas que aún no existan.
  • Exportar el contenido de las carpetas
  • Reiniciar el servicio NFS
  • Crear un archivo en una de las carpetas compartidas para comprobar que es accesible desde los clientes

Crear las carpetas a compartir

La creación de una carpeta para compartir es tan sencilla como utilizar la interfaz gráfica o el comando mkdir en la consola (aquí nos inclinaremos por la segunda opción).

Además, como no queremos que los usuarios experimenten problemas para acceder a los datos, también cambiaremos el nombre del usuario y grupo propietarios de la carpeta, para que no sean propiedad de nadie, y los permisos de acceso, para que todos los usuarios dispongan de todos los permisos sobre ella.

Los comandos a ejecutar serían estos:

sudo mkdir /compartido
sudo chown nobody:nogroup /compartido
sudo chmod -R 777 /compartido

1

Creamos la carpeta y cambiamos sus permisos

Esto en cuanto a la carpeta /compartido. Por otra parte, a la carpeta /home sólo accederemos como superusuario y a cada una de sus subcarpetas con el usuario correspondiente. Por este motivo, no cambiaremos su propiedad.

Más adelante hablaremos de la cuestión de los permisos utilizando NFS. De momento, nos interesa que todo sea lo más sencillo posible.

Exportar el contenido de las carpetas

Después de esto, debemos editar el archivo /etc/exports. Este es el archivo donde se indican a NFS las carpetas que vamos a compartir (exportar, en la terminología NFS). Cada carpeta exportada debe estar en una línea diferente de este archivo, aunque una línea muy larga puede continuarse en la línea siguiente poniendo al final una barra invertida ”\”.

Las líneas tienen el siguiente formato:

ruta cliente_1(opciones) cliente_2(opciones) …

Observa que cada cliente tiene dos partes:

No hay espacios en la definición de un cliente, sólo entre un cliente y otro, y entre el primero y la ruta de la carpeta.

  • La primera identifica al ordenador cliente (en el ejemplo lo hemos representado como cliente_1, cliente_2, …). Podemos usar cualquiera de las siguientes opciones:
    • Una dirección IP o un nombre DNS.
    • Caracteres comodín para representar todo el nombre del cliente o una parte. Podemos utilizar los comodines ‘?’(para representar un carácter cualquiera y ‘*’ (para representar cualquier conjunto de caracteres. No se recomienda utilizarlos con direcciones IP.
    • Intervalos de direcciones IP. Por ejemplo, 192.168.1.0/30, que permitirá acceder a las primeras 30 direcciones a partir de 192.168.1.0
    • netgropus. Cuando dispongamos de un servidor NIS en la red, podremos agrupar los usuarios en grupos . En este caso, podremos utilizar el grupo con el formato @nombre_de_grupo.
  • La segunda será una lista de opciones para compartir. Entre las opciones que podemos utilizar, se encuentran las siguientes:
    • ro(read-only): La carpeta compartida será de sólo lectura. Es la opción predeterminada.
    • rw (read-write): El usuario podrá realizar cambios en el contenido de la carpeta compartida.
    • wdelay: El servidor NFS no escribe en el disco si espera otra solicitud de forma inminente. Así se reducen los accesos a disco y mejora el rendimiento. Es la opción predeterminada, pero sólo funciona cuando usamos la opción sync.
    • no_wdelay: Deshabilita la característica anterior.
    • root_squash: Evita que los usuarios con privilegios administrativos los mantengan, sobre la carpeta compartida, cuando se conectan remotamente. En su lugar, se les trata como a un usuario remoto más. Es la opción predeterminada.
    • no_root_squash: Deshabilita la característica anterior.
    • sync: Evita responder peticiones antes de escribir los cambios pendientes en disco. Es la opción predeterminada.
    • async: Deshabilita la característica anterior. Mejora el rendimiento a cambio de que exista el riesgo de corrupción en los archivos o, incluso, en todo el sistema de archivos, si se produjese una interrupción del fluido eléctrico o un bloqueo del sistema.
    • subtree_check: Cuando el directorio compartido es un subdirectorio de un sistema de archivos mayor, NFS comprueba los directorios por encima de éste para verificar sus permisos y características. Es la opción predeterminada.
    • no_subtree_check: Deshabilita la característica anterior, lo que hace que el envío de la lista de archivos sea más rápido, pero puede reducir la seguridad.

En nuestro caso, incluiremos estas dos nuevas líneas en el archivo /etc/exports:

/home *(rw,sync,no_root_squash,no_subtree_check)
/compartido *(rw,sync,no_subtree_check)

Y para lograrlo, recurriremos, como es habitual, al editor de textos nano:

1

Abrimos el editor con privilegios de administración.

Una vez abierto el archivo, incluimos las líneas que indicamos más arriba:

2

Para salir, guardando los cambios, usamos la combinación de teclas Ctrl + X.

Iniciar/reiniciar el servicio NFS

Siempre que hagamos cambios en el archivo /etc/exports, necesitaremos reiniciar el servicio para que éstos sean efectivos. Lo conseguiremos escribiendo la siguiente orden en la ventana de terminal:

sudo /etc/init.d/nfs-kernel-server restart

En nuestro caso, como es la primera vez, en lugar de reiniciarlo, sencillamente lo iniciaremos. Es decir, la orden que escribiremos en la ventana de terminal es la siguiente:

sudo /etc/init.d/nfs-kernel-server start

1

Servicio iniciado.

Crear un archivo en una carpeta compartida

Después de configurar el servidor, tendremos que hacer lo propio con los clientes. Sin embargo, para que podamos comprobar que todo es correcto después de completar esa la operación, sería conveniente disponer de algún contenido en una de las carpetas compartidas. Así comprobaremos que el contenido está accesible.

Por lo tanto, nos dirigimos a /compartido y creamos un archivo cualquiera.

1

En este caso, nos hemos decantado por el oportuno nombre de Documento compartido en el servidor.txt