Configurar un servidor NFS en Linux: compartir directorio | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Configurar un servidor NFS en Linux para compartir un directorio mediante NFS

Nivel: Avanzado
Tiempo estimado: ~30 minutos
Objetivo: Configurar un servidor NFS en Linux para compartir un directorio con varios clientes, facilitando la automatización de tareas rutinarias y la auditoría de seguridad proactiva.

Introducción

Gestionar almacenamiento compartido en una flota de servidores es un requisito fundamental para mantener entornos de producción con altos requisitos de disponibilidad. El protocolo NFS (Network File System) permite a un sistema compartir un directorio mediante NFS a través de la red, actuando como un NAS (Network Attached Storage). Al desplegar un servidor NFS en Linux, puede ofrecer acceso centralizado a archivos a varios clientes NFS de forma simultánea. Este tutorial explica cómo configurar un servidor NFS en Linux de forma eficiente, utilizando NFSv4.2 de forma predeterminada.

Warning

Esta guía utiliza el método de seguridad sec=sys (AUTH_SYS). En este modo, el servidor confía de forma inherente en la identificación de usuarios (UID/GID) que envía el cliente, sin ninguna autenticación criptográfica. El control de acceso se basa únicamente en el filtrado por dirección IP en /etc/exports y en los permisos UNIX estándar de los archivos. Esta configuración es excelente para redes internas de confianza (por ejemplo, dentro de un entorno virtual Proxmox), pero no se recomienda para redes no confiables. Para mayor seguridad, considere implementar la autenticación Kerberos (por ejemplo, sec=krb5, sec=krb5i o sec=krb5p).

Requisitos previos

Antes de empezar, asegúrese de cumplir las siguientes condiciones:

  • Sistema operativo: Ubuntu 22.04/24.04 LTS, Debian 12/13 o CentOS/RHEL 9/AlmaLinux 10
  • Software necesario: nfs-kernel-server (2.6+) en Ubuntu/Debian o nfs-utils (2.x+) en CentOS/RHEL/AlmaLinux
  • Acceso: acceso con sudo o root en todas las máquinas
  • Red: los servidores deben poder comunicarse a través de una red privada.
  • Conocimientos necesarios: manejo seguro de la línea de comandos de Linux.

Terminología

Familiarícese con los siguientes conceptos básicos antes de continuar:

  • NFS (Network File System): protocolo que permite acceder a archivos a través de una red como si fueran almacenamiento local.
  • Servidor NFS: la máquina central que aloja los archivos y los pone a disposición en la red.
  • Cliente NFS: la máquina remota que se conecta al servidor para acceder a los archivos compartidos.
  • Directorio compartido (Shared Directory): la carpeta local del servidor que se pondrá a disposición de los clientes.
  • Exportación (Export): el proceso de poner un directorio local a disposición de los clientes a través de la red.
  • /etc/exports: el archivo de configuración principal que utiliza el demonio NFS para determinar qué directorios se exportan y con qué reglas de acceso.
  • Montaje (Mounting): el proceso de conectar un recurso compartido remoto a la estructura de directorios local.
  • Punto de montaje (Mount Point): el directorio local del cliente en el que se conecta el sistema de archivos remoto.
  • nfs-utils: el paquete de software que contiene las utilidades y demonios necesarios para el cliente y el servidor NFS.
  • RPC (Remote Procedure Call): protocolo que permite a un programa solicitar un servicio a un programa ubicado en otro equipo.
  • Portmapper / rpcbind: servicio que asigna números de programa RPC a números de puerto de red, necesario para que NFS negocie las conexiones.
  • Permisos (Permissions): derechos de acceso que determinan quién puede leer, escribir o ejecutar archivos.
  • Acceso de solo lectura (RO): estado de permisos que permite a los clientes ver los archivos, pero no modificarlos.
  • Acceso de lectura y escritura (RW): estado de permisos que permite a los clientes modificar los archivos compartidos.
  • root_squash: función de seguridad que asigna las solicitudes del usuario root remoto a un usuario sin privilegios (nobody) para evitar el acceso root no autorizado.
  • Firewall (cortafuegos): sistema de seguridad de red que supervisa y controla el tráfico de red entrante y saliente.
  • Sistema de archivos de Linux: el método estructurado que utiliza Linux para almacenar y organizar archivos en disco.
  • Nombre de host (Hostname): etiqueta legible asignada a un dispositivo conectado a una red informática.
  • Dirección IP: identificador numérico único asignado a cada dispositivo conectado a una red.
  • Automount (montaje automático): la práctica de montar sistemas de archivos automáticamente durante el arranque.
  • NAS (Network Attached Storage): arquitectura de almacenamiento a nivel de archivo que hace accesibles los datos a través de una red.

Paso 1: Instalar los paquetes necesarios

Primero, instale el software necesario en el servidor y en los clientes. El paquete nfs-utils proporciona los demonios y herramientas necesarios para gestionar el sistema de archivos. Las instalaciones modernas deben usar NFSv4.2 de forma predeterminada, que es con estado (stateful) y simplifica las reglas del cortafuegos.

En el servidor NFS (Debian/Ubuntu):

sudo apt update sudo apt install nfs-kernel-server

En el servidor NFS (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils sudo systemctl enable --now rpcbind nfs-server

Info

En una configuración exclusivamente NFSv4, el servicio rpcbind no es técnicamente necesario para el montaje NFS en sí. Sin embargo, sí lo es si va a usar el comando showmount (como se muestra en el Paso 5) para descubrir exportaciones, o si debe dar soporte a clientes NFSv3 heredados.

En el cliente NFS (Debian/Ubuntu):

sudo apt update sudo apt install nfs-common

En el cliente NFS (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils

La instalación debería completarse correctamente. Los servicios RPC y NFS necesarios ya están instalados y en ejecución.

Paso 2: Crear el directorio compartido y configurar los permisos NFS

Cree en el servidor el directorio que desea exportar:

sudo mkdir -p /mnt/nfs_share

Configure los permisos NFS adecuados para que los clientes puedan acceder a los archivos. En este tutorial asignaremos la propiedad al usuario de servicio dedicado sin privilegios y concederemos los permisos de grupo apropiados.

Debian/Ubuntu:

sudo chown nobody:nogroup /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

CentOS/RHEL/AlmaLinux:

sudo chown nobody:nobody /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

Esta configuración no elude el modelo de permisos local de Linux, de modo que el control de acceso de NFS no es su única capa de seguridad. El permiso 2775 habilita de forma segura la colaboración en grupo sin vulnerar el principio de mínimo privilegio.

Paso 3: Configurar el servidor NFS en Linux

Para definir las reglas de exportación, debe editar el archivo /etc/exports en el servidor.

Abra el archivo:

sudo nano /etc/exports

Añada la siguiente línea para conceder acceso a una subred de clientes concreta (por ejemplo, <CLIENT_SUBNET>):

/mnt/nfs_share <CLIENT_SUBNET>(rw,sync,no_subtree_check,root_squash)

Esto configura el servidor para exportar el directorio con las siguientes opciones:

  • rw: concede acceso de lectura y escritura (RW). Use ro para acceso de solo lectura (RO).
  • sync: fuerza a que los cambios se escriban en disco antes de responder al cliente.
  • no_subtree_check: desactiva la comprobación de subárbol, lo que mejora la fiabilidad.
  • root_squash: asigna explícitamente las solicitudes del usuario root remoto a un usuario sin privilegios (nobody). Es el comportamiento predeterminado, pero conviene indicarlo siempre de forma explícita para fines de auditoría. Use no_root_squash únicamente en entornos estrictamente controlados.

Info

Puede especificar varios clientes añadiendo más direcciones IP o subredes separadas por espacios en la misma línea, lo que habilita el acceso para varias máquinas.

Aplique la configuración de exportación:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

El servidor ya está exportando activamente el directorio a la red.

Paso 4: Configurar el cortafuegos

Debe permitir el tráfico NFS a través del cortafuegos del servidor para que los clientes puedan conectarse.

Con UFW (Debian/Ubuntu):

En una instalación nueva de Ubuntu, UFW está inactivo de forma predeterminada. En un sistema Debian 13 limpio, es posible que ni siquiera esté instalado. Si va a usar UFW, asegúrese de que esté instalado (sudo apt install ufw) y activado explícitamente antes de añadir sus reglas:

sudo ufw enable sudo ufw allow from <CLIENT_SUBNET> to any port nfs

Con Firewalld (CentOS/RHEL/AlmaLinux):

sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --reload

Info

AlmaLinux/RHEL (SELinux): en una instalación limpia de AlmaLinux, SELinux está en modo Enforcing. Para la ruta predeterminada /mnt/nfs_share que se usa en esta guía, el contexto existente mnt_t es compatible con el demonio nfsd. Sin embargo, si planea exportar rutas no estándar (por ejemplo, /srv, /data o /home/...), NFS no podrá escribir en ellas a menos que configure SELinux adecuadamente. Puede activar el booleano global (sudo setsebool -P nfs_export_all_rw 1) o establecer el fcontext correcto con semanage.

Los clientes de la subred permitida ya pueden acceder a los servicios NFS.

Paso 5: Verificar la exportación con el comando showmount

En el servidor, verifique de forma proactiva las exportaciones activas y el estado interno de auditoría para garantizar el cumplimiento de la seguridad. Ejecute el siguiente comando para comprobar las opciones de exportación exactas que aplica el demonio NFS:

sudo cat /var/lib/nfs/etab

Como alternativa, puede usar sudo exportfs -v para ver la lista detallada de exportaciones.

A continuación, desde la máquina cliente, use el comando showmount para comprobar que la exportación es visible a través de la red. Sustituya <SERVER_IP> por la dirección IP real de su servidor NFS.

Info

showmount requiere que el puerto 111 (rpcbind) esté abierto en el servidor. Si utiliza una configuración exclusivamente NFSv4 y no abrió este puerto, omita este paso: verifique las exportaciones en el servidor con sudo exportfs -v y compruebe la accesibilidad desde el cliente montando el recurso en el Paso 6.

showmount -e <SERVER_IP>

Salida esperada:

Export list for <SERVER_IP>: /mnt/nfs_share <CLIENT_SUBNET>

Si la exportación aparece en la lista, la configuración del servidor es correcta y es accesible desde el cliente.

Paso 6: Montar el sistema de archivos NFS en el cliente

Para usar el recurso compartido, debe montar el sistema de archivos NFS en un punto de montaje local del cliente.

Cree el punto de montaje:

sudo mkdir -p /mnt/client_share

Monte el directorio:

sudo mount -t nfs -o vers=4.2 <SERVER_IP>:/mnt/nfs_share /mnt/client_share

El recurso compartido ya está montado. Puede comprobarlo ejecutando df -h para ver la unidad de red conectada. Al especificar vers=4.2 se garantiza que el cliente utilice explícitamente la versión más reciente del protocolo en lugar de degradarse silenciosamente a NFSv3 o NFSv4.0.

Tip

Para que el cliente monte el sistema de archivos NFS automáticamente al arrancar, puede configurar un montaje estático añadiendo una entrada a /etc/fstab. Tenga en cuenta que este es un montaje estático; las configuraciones de Automount realmente dinámicas suelen gestionarse en producción mediante autofs (/etc/auto.master).

Abra /etc/fstab:

sudo nano /etc/fstab

Añada la siguiente línea:

<SERVER_IP>:/mnt/nfs_share /mnt/client_share nfs auto,nofail,noatime,_netdev,hard,vers=4.2,timeo=600 0 0

Esto evita que el cliente bloquee el proceso de arranque si el servidor no está disponible temporalmente.

Verificación

Para confirmar que los permisos NFS y la configuración de red son correctos, realice una prueba de lectura y escritura desde el cliente:

touch /mnt/client_share/test_file.txt ls -l /mnt/client_share/

Salida esperada:

-rw-r--r-- 1 nobody nogroup 0 May 24 12:00 test_file.txt

Info

Según el sistema operativo del cliente, el propietario del archivo se mostrará como nobody nogroup (Debian/Ubuntu) o nobody nobody (RHEL/AlmaLinux). Este es el comportamiento esperado del idmapping de NFSv4 cuando las solicitudes se asignan correctamente a un usuario sin privilegios. Si observa discrepancias, compruebe que el parámetro Domain coincida en /etc/idmapd.conf tanto en el servidor como en el cliente.

Si el archivo se crea correctamente, sus clientes pueden comunicarse con el servidor y escribir datos según lo previsto.

Revertir los cambios

Para desmontar el recurso compartido en el cliente:

sudo umount /mnt/client_share

Elimine la entrada de /etc/fstab en el cliente, si la añadió.

Para dejar de compartir el directorio en el servidor, elimine la línea correspondiente de /etc/exports y aplique los cambios:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Para eliminar por completo los paquetes instalados:

Debian/Ubuntu:

sudo apt remove nfs-kernel-server nfs-common

CentOS/RHEL/AlmaLinux:

sudo dnf remove nfs-utils

Esta acción desactivará por completo la funcionalidad NFS en sus máquinas.

Conclusión

Ha aprendido correctamente a configurar un servidor NFS en Linux. Con los ajustes adecuados, puede compartir un directorio mediante NFS de forma segura con varios clientes NFS. Esta configuración es una base fiable para automatizar tareas administrativas rutinarias y centralizar registros con fines de auditoría de seguridad proactiva.

Versión del documento: 1.0
Última actualización: mayo de 2026
Responsable: Equipo de Documentación Técnica

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA