Cómo instalar y configurar un servidor NFS

Vamos a ver cómo compartir directorios y archivos con un servidor NFS en Linux.

 
Un servidor NFS tiene una gran utilidad cuando vamos a compartir archivos y directorios, sobre todo en una red local; es utilizado para sistemas de archivos distribuidos, es decir NFS (Network File System);
 
servidor nfs linux
 

 
En este artículo
 

 

 

 

 

 

Instalación del Servidor NFS en Linux

 
En este caso utilizaremos CentOS, aunque también podríamos utilizar Debian, Ubuntu

  • Instalación de los paquetes necesarios para el Servidor NFS en CentOS:
yum -y install nfs-utils
yum install rpcbind

 

  • Instalación en Debian/Ubuntu/Mint :
apt-get install nfs-kernel-server
apt-get install nfs-common

 

 

Iniciar y habilitar el servicio del servidor NFS

 

  • Iniciar el servicio del servidor NFS y habilitarlo para el inicio del sistema (CentOS):
systemctl start rpcbind nfs-server
systemctl enable rpcbind nfs-server

 

 

Comprobamos Status del servicio del Servidor NFS

 
status servicio nfs server
 

 

Compartir archivos en NFS Server por medio de /etc/exports

 
En el archivo /etc/exports del Servidor NFS, configuraremos los recursos compartidos:

nano /etc/exports

 

y compartimos el directorio /compartido

(contenido del archivo /etc/exports ):

/compartido 192.168.8.0/24(ro,all_squash)

 
/etc/exports
 

 

El comando exportfs

 

Con el comando exportfs podremos manejar la tabla de los recursos compartidos/exportados que han sido declarados en el archivo /etc/exports
 
Tenemos algunas opciones interesantes para el comando exportfs:

  • exportfs -v : muestra una lista de recursos compartidos y sus opciones configuradas en el archivo /etc/exports
  • exportfs -a : Exporta todos los directorios declarados en el archivo /etc/exports
  • exportfs -u : Sirve para des-exportar uno o más recursos.
  • exportfs -r : re-exporta los directorios después de modificar el archivo /etc/exports

 

exportfs recursos compartidos nfs
 

 

Página del Manual de Linux de exportfs

 
opciones exportfs

 

 

Aplicar los cambios realizados en /etc/exports

 
Cada vez que realicemos cambios en el archivo, hemos de ejecutar

exportfs -a

en el servidor NFS, para aplicar los cambios
 

 

Opciones de permisos para los recursos compartidos NFS, en el archivo /etc/exports

 

  • ro : lectura
  • rw : lectura y escritura
  • link_relative : convierte los enlaces simbólicos absolutos en enlaces simbólicos relativos.
  • link_absolute : Lo contrario, de relativos a absolutos. Esta es la opción predeterminada.
  • root_squash : trata las consultas como si vinieran del usuario nobody (lo más seguro). O sea, que evitamos que los usuarios conectados actúen como root.
  • no_root_sqash : Desactiva lo anterior, y por tanto implica algo de riesgo porque habilita los privilegios de root.
  • all_squash : Realiza la acción root_squash para todos los usuarios, incluido los usuarios root.
  • no_all_squash : Habilita la autorización del usuario.

 

 

Permisos de los directorios compartidos por NFS: Usuario nfsnobody

 
Cambiamos los permisos de los directorios compartidos por NFS, y haremos propietario al usuario nfsnobody
 

chmod -R 755 /compartido
chown nfsnobody:nfsnobody /compartido

 
Podemos ver en el archivo /etc/passwd que tras instalar el servidor NFS, ya existe el usuario nfsnobody

usuario nfsnobody

 

 
A CONTINUACIÓN VEREMOS:
 

 

Instalación del Cliente NFS

 

  • Instalamos el cliente NFS para utilizar el servidor NFS (en CenTOS) :
yum install nfs-utils
yum install rpcbind

 

  • En Debian:
sudo apt-get install nfs-common

 

 

Preparar el montaje de los recursos NFS en el cliente, para cada inicio del sistema, con el archivo /etc/fstab

 
Hemos de añadir en el archivo /etc/fstab lo que queremos montar. Así que añadimos los recursos compartidos desde el servidor NFS:

 

/etc/fstab - cliente nfs
 

 

Comprobar que el servicio rpcbind está activado y funcionando

 

Es necesario que el servicio rpcbind se encuentre en ejecución. rpcbind coordina los servicios RPC y los puertos.

 

servicio rpcbind cliente nfs
 
Reiniciamos el cliente para comprobar que en el arranque del sistema, monta los recursos NFS del servidor remoto,  especificados en su /etc/fstab
 

 

Montaje manual de recursos en el cliente NFS sin reiniciar el equipo

 

mount 192.168.8.114:/compartido2 /compartido2

 

Montamos en el cliente:

mount -t nfs 192.168.8.114:/compartido /compartido-centos/

mount recurso nfs en cliente nfs
 

o también , para montar con permisos , si es que lo permite el servidor NFS:

mount -o rw 192.168.8.114:/compartido2 /compartido2

 

 
A CONTINUACIÓN:
 

 

Seguridad para el servidor NFS

 
Si quisieramos definir qué hosts pueden y cuales no pueden utilizar los recursos compartidos por NFS, utilizaríamos los arhivos

  • hosts.deny
  • hosts.allow

 

 

Ver los clientes conectados al servidor NFS

 
Podemos ver los clientes conectados el al servidor NFS con:

netstat | grep :nfs

 
clientes nfs conectados al servidor
 

También podemos comprobar ls clientes NFS conectados con en comando :
 

ss -a|grep nfs

comprobar clientes nfs conectados
 

 

Comprobamos en el cliente NFS los recursos montados (mount / showmount / df)

 

  • Lo podemos hacer con
    mount | grep "nombre del recurso"

mount nfs

 

  • Comprobamos desde el cliente NFS los recursos montados/exportados del servidor NFS, con el comando showmount -e:

showmount nfs
 

  • Podemos comprobar los recursos montados en el cliente NFS con
df -h

df nfs

 

 

Comprobar recursos NFS con rpcinfo

 
rpcinfo nos mostrará info acerca de los procesos RPC abiertos y el puerto utilizado.

Por ejemplo con “rpcinfo -p” podemos ver los servicios relacionados con NFS, y sus puertos:

rpcinfo -p

nfs rpcinfo
 

 

Desmontar recursos NFS montados

 
En el cliente ejecutamos:

umount nombre_recurso

en este caso sería

umount /compartido2

 

 
Y así terminamos con la instalación y configuración de un servidor NFS y de un cliente NFS. El servidor NFS será de gran utilidad para exportar archivos y directorios con las restricciones y permisos adecuados.