Saltar al contenido

Cómo configurar un montaje NFS en Ubuntu 18.04

marzo 4, 2020

 

Introducción

NFS o red de archivos del sistema, es un protocolo de sistema de archivos distribuido que le permite montar directorios remotos en el servidor. Esto le permite gestionar el espacio de almacenamiento en un lugar diferente y escritura a ese espacio desde varios clientes. NFS proporciona una manera relativamente rápida y fácil de los sistemas de acceso remoto a través de una red y funciona bien en situaciones en las que se debe acceder regularmente a los recursos compartidos.

En esta guía, vamos a repasar cómo instalar los componentes necesarios para la funcionalidad NFS, configure montajes de NFS, y un desmontaje NFS compartido remoto.

Requisitos previos

Se utilizará dos servidores en este tutorial, con una parte de su intercambio con el otro sistema de archivos. Para seguir adelante, se necesita:

  • Dos Ubuntu 18.04 servidores. Cada uno de ellos debe tener un usuario no root con privilegios sudo configurado, un simple conjunto de cortafuegos con UFW, y redes privadas, si está disponible para la asistencia you.for la creación de un usuario no root con privilegios sudo y un firewall, siga nuestra configuración inicial del servidor con la configuración de Ubuntu 18.04 guide.For ayuda a redes privadas, ver la forma de configurar y de utilizar digitalocean red privada.
  • Para asistencia creación de un usuario no root con privilegios sudo y un firewall, siga nuestra configuración inicial del servidor con Ubuntu 18.04 guía.
  • Para obtener ayuda para la creación de redes privadas, ver la forma de configurar y de utilizar digitalocean red privada.

Dos Ubuntu 18.04 servidores. Cada uno de ellos debe tener una raíz usuario no con privilegios sudo configurado, un simple firewall configurado con UFW, y redes privadas, si está disponible para usted.

  • Para el ajuste de la asistencia a un usuario no root con privilegios sudo y un firewall, siga nuestra configuración inicial del servidor con Ubuntu 18.04 guía.
  • Para obtener ayuda para la creación de redes privadas, ver la forma de configurar y de utilizar digitalocean red privada.

largo de este tutorial, nos referimos al servidor que comparte sus directorios como el anfitrión y el servidor que se monta estos directorios como el cliente . Con el fin de mantenerlos en orden, vamos a utilizar las siguientes direcciones IP como sustitutos de la acogida y cliente valores :

  • Anfitrión: 203.0.113.0
  • Cliente: 203.0.113.24

Cuando estas direcciones IP aparecen en los comandos y archivos de configuración, tendrá que reemplazarlos con sus propios respectiva anfitrionas y el cliente direcciones IP.

Paso 1 – Descarga e instalación de los componentes de

Comenzaremos con la instalación de los componentes necesarios en cada servidor.

en el host

En el servidor anfitrión , instalar el paquete nfs-kernel-server, lo que permitirá que comparta sus directorios. Dado que esta es la primera operación que se está realizando con apt en esta sesión, actualice el índice de paquetes local antes de la instalación:

sudo apt update
sudo apt install nfs-kernel-server

  • sudo apt update sudo apt
  • instalar NFS-kernel-server

Una vez que estos paquetes son instalado, cambie al servidor de cliente .

En el cliente

En el servidor cliente , tenemos que instalar un paquete llamado NFS-común, lo que proporciona una funcionalidad NFS sin incluir los componentes de servidor que no sean necesarios. Una vez más, actualizar el índice de paquetes local antes de la instalación para asegurarse de que tiene información actualizada:

sudo apt update
sudo apt install nfs-common

  • sudo update apt
  • sudo apt instalar nfs-common

Ahora que ambos servidores tienen los paquetes necesarios, puede iniciar la configuración de ellos.

Paso 2 – Crear el compartir directorios en el Host

Vamos a cuota de dos directorios separados, con diferentes ajustes de configuración, con el fin de ilustrar dos formas fundamentales que NFS puede ser configurado con respecto al acceso de superusuario.

superusuarios puede hacer en cualquier lugar nada en su sistema. Sin embargo, montados por NFS directorios no son parte del sistema en el que están montados, lo que por defecto, el servidor NFS se niega a realizar operaciones que requieren privilegios de superusuario. Este defecto medios de restricción que superusuarios en el cliente no puede escribir archivos como root , la propiedad reasigne o realizar cualquier otra tarea de superusuario en el montaje NFS.

A veces, los usuarios sin embargo, no son de confianza en el sistema cliente que necesitan para llevar a cabo estas acciones en el sistema de archivos montado pero que no tienen necesidad de acceso de superusuario en el host . Puede configurar el servidor NFS para permitir que esto permite esto, si bien introduce un elemento de riesgo, como por ejemplo un usuario podía acceder aumento de la raíz a todo el sistema anfitrión .

Ejemplo 1: Exportación de un uso general del montaje

En el primer ejemplo, vamos a crear una de propósito general montaje NFS que utiliza el comportamiento por defecto para NFS hace que sea difícil para un usuario con privilegios de root en el cliente máquina para interactuar con el anfitrión usando esos clientes privilegios de superusuario. Se podría utilizar algo similar para almacenar archivos que fueron subidos mediante un sistema de gestión de contenido o para crear un espacio para que los usuarios fácilmente archivos de proyecto de acción.

En primer lugar, hacer un directorio compartido llamado NFS:

sudo mkdir /var
fs/general -p

  • sudo mkdir / var / nfs / -p generales

Ya que estamos creando con sudo, el directorio es propiedad de la raíz usuario en el acoger . ls

ls -la /var
fs/general

  • -la / var / nfs / generales

Output4 drwxr-xr-x 2 root root 4096 Jul 25 15:26 .

NFS se traducirá ninguna raíz operaciones en el cliente a la que nadie: nogroup credenciales como una medida de seguridad. Por lo tanto, tenemos que cambiar la propiedad de directorio para que coincida con esas credenciales.

sudo chown nobody:nogroup /var
fs/general

  • sudo chown nadie: nogroup / var / nfs / generales

Ahora está listo para exportar este directorio.

Ejemplo 2: Exportar el directorio principal

En el segundo ejemplo, el objetivo es hacer que los directorios principales de los usuarios almacenados en el host disponibles en el cliente servidores , mientras que permite a los administradores de confianza de los clientes servidores el acceso que necesitan para gestionar convenientemente los usuarios.

Para hacer esto, vamos a exportar el directorio / home. Puesto que ya existe, no es necesario para crearlo. No vamos a cambiar los permisos, tampoco. Si nos hizo , podría dar lugar a una serie de cuestiones para cualquier persona con un directorio en la máquina anfitrión .

Paso 3 – Configuración de las exportaciones NFS en el servidor

siguiente anfitrión, vamos a bucear en el archivo de configuración de NFS para establecer la distribución de estos recursos.

Abrir el archivo / etc / exportaciones en el editor de texto con la raíz privilegios:

sudo nano /etc/exports

  • sudo nano / etc / exports

el archivo tiene comentarios se muestran la estructura general de cada línea de configuración. La sintaxis es básicamente:

directory_to_share client(share_option1,...,share_optionN)

tendremos que crear una línea para cada uno de los directorios que plan para compartir. Desde nuestro ejemplo cliente tiene una IP de 203.0.113.24, nuestras líneas serán idénticos a los siguientes. Asegúrese de cambiar la dirección IP que se muestra aquí a la de su cliente :

/var
fs/general 203.0.113.24(rw,sync,no_subtree_check)
/home 203.0.113.24(rw,sync,no_root_squash,no_subtree_check)

Aquí, estamos utilizando las mismas opciones de configuración para ambos directorios con la excepción de no_root_squash. Vamos a echar un vistazo a lo que cada una de estas opciones significa:

  • RW: Esta opción le da al equipo cliente tanto de lectura como de escritura en el volumen.
  • sincronización: Esta opción fuerza NFS para escribir los cambios en el disco antes de responder. Esto resulta en un entorno más estable y consistente ya que la respuesta refleja el estado real del volumen remoto. Sin embargo, también se reduce la velocidad de las operaciones de archivo.
  • no_subtree_check: Esta opción evita la comprobación de subárbol, que es un proceso en el que el anfitrión debe comprobar si el archivo es en realidad todavía disponibles en el árbol exportado para cada solicitud. Esto puede causar muchos problemas cuando un archivo se cambia mientras que el cliente haya que abrir. En casi todos los casos, es mejor desactivar el control del subárbol.
  • no_root_squash: Por defecto, NFS traduce las peticiones de un usuario root de forma remota a un usuario sin privilegios en el servidor. Esto fue pensado como característica de seguridad para evitar que un usuario root en el cliente de utilizar el sistema de archivos del sistema como usuario root. desactiva no_root_squash este comportamiento de ciertas acciones.

Cuando haya terminado de realizar los cambios, guarde y cierre el archivo. Entonces, para que la parte disponible para los clientes que ha configurado, reiniciar el servidor NFS con el siguiente comando:

sudo systemctl restart nfs-kernel-server

  • sudo systemctl reinicio nfs-kernel-server

Antes de poder utilizar las nuevas acciones, sin embargo, Tendrá que estar seguro de que el tráfico de las acciones está permitido por las reglas del cortafuegos.

Paso 4 – Ajuste del servidor de seguridad en el Host

En primer lugar, vamos a comprobar el estado del firewall para ver si está activado y, si es así, para ver lo que actualmente está permitida:

sudo ufw status

  • sudo UFW estado

OutputStatus: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

En nuestro sistema , se está permitiendo sólo el tráfico SSH a través de, por lo que tendremos que añadir una regla para el tráfico NFS.

Con muchas aplicaciones se puede usar sudo UFW lista de aplicaciones y les permite por su nombre, pero NFS no es uno de esos. Sin embargo, debido a la UFW también comprueba / etc / services para el puerto y el protocolo de un servicio, que todavía puede añadir NFS por su nombre. La mejor práctica recomienda que habilite la regla más restrictiva que todavía permitirá que el tráfico que desea permitir, por lo que en lugar de permitir el tráfico desde cualquier lugar, vamos a ser específico.

Utilice el siguiente comando para abrir el puerto 2049 en el host , asegurándose de sustituir la dirección IP de su cliente :

sudo ufw allow from 203.0.113.24 to any port nfs

  • sudo permiten UFW de 203.0.113.24 a cualquier puerto NFS

Puede comprobar el cambio escribiendo:

sudo ufw status

  • sudo UFW estado

debería ver el tráfico permitido desde el puerto 2049 en la salida:

OutputStatus: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2049 ALLOW 203.0.113.24
OpenSSH (v6) ALLOW Anywhere (v6)

Esto confirma que UFW sólo permitirá el tráfico NFS en el puerto 2049 de nuestra máquina cliente .

Paso 5 – Creación de puntos de montaje y directorios en el cliente

Ahora que el servidor anfitrión está configurado de montaje y de servicio a sus acciones, vamos a preparar nuestro cliente .

Con el fin de hacer que los recursos compartidos remotos disponibles en el cliente , tenemos que montar los directorios en el host que queremos compartir con los directorios vacíos en el cliente .

Nota: Si hay archivos y directorios en su punto de montaje, que se ocultará tan pronto como se monta el recurso compartido de NFS. Para evitar la pérdida de archivos importantes, estar seguro de que si se monta en un directorio que ya existe de que el directorio está vacío.

Vamos a crear dos directorios para nuestros montajes:

sudo mkdir -p
fs/general
sudo mkdir -p
fs/home

  • sudo mkdir -p / NFS / generales
  • sudo mkdir -p / NFS / home

Ahora que tenemos un lugar para poner las acciones remotas y han abierto el servidor de seguridad, podemos montar las acciones abordando nuestro servidor anfitrión , que en esta guía es 203.0.113.0:

sudo mount 203.0.113.0:/var
fs/general
fs/general
sudo mount 203.0.113.0:/home
fs/home

  • sudo mount 203.0.113.0:/var
    fs/general / NFS / generales
  • sudo mount 203.0.113.0:/home / NFS / home

Estos comandos se montará las acciones desde el ordenador principal en la máquina cliente . Puede hacer doble comprobar que montaron con éxito en varias formas. Esto se puede comprobar con un sencillo montaje o el comando findmnt, pero df -h proporciona una salida más fácil de leer que ilustra cómo se muestra el uso del disco de forma diferente para los recursos compartidos NFS:

df -h

  • df -h

OutputFilesystem Size Used Avail Use% Mounted on
udev 238M 0 238M 0% /dev
tmpfs 49M 628K 49M 2% /run
/dev/vda1 20G 1.2G 18G 7% /
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0
203.0.113.0:/home 20G 1.2G 18G 7%
fs/home
203.0.113.0:/var
fs/general 20G 1.2G 18G 7%
fs/general

Tanto de las acciones hemos montado aparecerá en la parte inferior. Debido a que se montan desde el mismo sistema de archivos, muestran el mismo uso del disco. Para ver la cantidad de espacio que realmente está siendo utilizado en cada punto de montaje, utilice el comando de uso del disco du y el camino de la montura. La bandera -s ofrece un resumen del uso en lugar de mostrar el uso de cada archivo. Las impresiones -h salida legible por humanos.

Por ejemplo:

du -sh
fs/home

  • du-SH / NFS / home

Output36K
fs/home

Esto demuestra nosotros que el contenido del directorio personal entero está utilizando sólo 36K del espacio disponible.

Paso 6 – Pruebas de acceso NFS

A continuación, vamos a la prueba de acceso a los recursos compartidos escribiendo algo para cada uno de ellos.

Ejemplo 1: El uso general Compartir

En primer lugar, escribir un archivo de prueba a la var / share / NFS / generales: toque

sudo touch
fs/general/general.test

  • sudo
    fs/general/general.test

A continuación, comprobar su propiedad: ls

ls -l
fs/general/general.test

  • -l
    fs/general/general.test

Output-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31
fs/general/general.test

Debido a que hemos montado este volumen sin cambiar el comportamiento predeterminado del NFS y creamos el archivo como usuario raíz el cliente de máquina a través del comando sudo, la propiedad de los archivos por defecto a nadie: nogroup. cliente superusuarios no serán capaces de realizar acciones administrativas típicas, como cambiar el propietario de un archivo o la creación de un nuevo directorio para un grupo de usuarios, en esta montado en NFS acción.

Ejemplo 2: El Directorio de Inicio Compartir

Para comparar los permisos de la cuota de uso general con la participación Directorio principal, crear un archivo de directorio principal de la misma manera: toque

sudo touch
fs/home/home.test

  • sudo
    fs/home/home.test

continuación, busque en la propiedad del archivo: ls

ls -l
fs/home/home.test

  • -l
    fs/home/home.test

Output-rw-r--r-- 1 root root 0 Aug 1 13:32
fs/home/home.test

Hemos creado home.test como root usando el comando sudo, exactamente de la misma manera que hemos creado el archivo general.test. Sin embargo, en este caso, que es propiedad de la raíz porque sobreescrivimos el comportamiento predeterminado cuando especificamos la opción no_ raíz _squash en este montaje. Esto permite a los usuarios de raíz nuestra en la máquina cliente para actuar como root y hace que la administración de cuentas de usuario mucho más conveniente. Al mismo tiempo, esto significa que no tenemos que dar a estos usuarios raíz acceso en el host .

Paso 7 – Montaje de la directorios NFS remoto en el arranque

podemos montar los recursos compartidos NFS remotos de forma automática en el arranque mediante su inclusión en / etc / fstab en el cliente .

Abrir archivo con privilegios de root en tu editor de texto:

sudo nano /etc/fstab

  • sudo nano / etc / fstab

Al final del archivo, agregue una línea para cada una de nuestras acciones. Que se verá así:

. . .
203.0.113.0:/var
fs/general
fs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
203.0.113.0:/home
fs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Nota: Usted puede encontrar más información acerca de las opciones que está especificando aquí en la página del manual de NFS. Puede acceder a esta ejecutando el siguiente comando:

man nfs

  • hombre del servidor NFS

El cliente montará automáticamente las particiones remotas en el arranque, aunque puede tomar unos minutos para establecer la conexión y por las acciones estar disponible.

Paso 8 – Desmontaje de una NFS compartido remoto

Si ya no desea que el directorio remoto a ser montado en su sistema, puede desmontarlo moviendo fuera de la estructura de directorios de la acción y desmontaje, así:

cd ~
sudo umount
fs/home
sudo umount
fs/general

  • cd ~
  • sudo umount / NFS / home
  • sudo umount / NFS / generales

Esto eliminará las acciones a distancia, dejando sólo su almacenamiento local accesible:

df -h

  • df -h

Output
Filesystem Size Used Avail Use% Mounted on
/dev/vda 59G 1.3G 55G 3% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 320K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user

Si también quieren evitar que se volvió a montar en el siguiente reinicio, editar / etc / fstab y elimine la línea o comentario a cabo mediante la colocación de un símbolo # al principio de la línea. También puede evitar que el montaje automático mediante la eliminación de la opción automática, lo que le permitirá montar manualmente.

Conclusión

En este tutorial, hemos creado una serie de NFS e ilustró algunos comportamientos clave NFS mediante la creación de montajes NFS dos diferentes, que hemos compartido con nuestro cliente NFS . Si usted está mirando para poner en práctica NFS en la producción, es importante tener en cuenta que el protocolo en sí no está encriptada. En los casos en que estás compartiendo archivos que están destinados a ser accesibles al público, esto no causa ningún problema serio.

Si está utilizando NFS para los datos privados, sin embargo, tendrá que decidir cómo desea proteger esos datos. Usted puede ser capaz de NFS enrutar a través de SSH o una conexión VPN para crear una experiencia más segura, pero esto a menudo viene con una reducción significativa en el rendimiento. Si el rendimiento es un problema, considere SSHFS. Es un poco más lento que el tráfico NFS sin cifrar, pero por lo general mucho más rápido que NFS tunelizados. Kerberos autentica cifrado para NFS es otra opción para explorar.