LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Esta guía explica cómo configurar un servidor NFS y un cliente de NFS. El acrónimo NFS significa Network File System; y como a través de NFS, un cliente de acceso (lectura, escritura) compartirá con un servidor NFS, el contenido de éste último como si de un disco local se tratara
 

1 Nota preliminar

  • Servidor NFS: server.example.com, dirección IP: 192.168.1.34
  • Cliente NFS: client.example.com, dirección IP: 192.168.1.33

2 Instalación NFS


servidor:

En el servidor NFS, ejecutamos:

yum install nfs-utils nfs-utils-lib

(apt-get install, si usa Debian/Ubuntu)

Entonces creamos los enlaces de inicio del sistema para el servidor NFS e iniciarlo:

chkconfig --levels 235 nfs on

service nfs start
o

/etc/init.d/nfs start


cliente:

En el cliente podemos instalar NFS como sigue (esto es realmente lo mismo que en el servidor):

yum install nfs-utils nfs-utils-lib

 

3 Exportación directorios del servidor


servidor:

Me gustaría hacer que los directorios /home y /var/nfs fueran accesibles al cliente; por lo tanto  debemos "Exportarlos" en el servidor.

Cuando un cliente accede a un recurso compartido de NFS, sucede normalmente como el usuario nobody. Generalmente el directorio /home no es propiedad de nadie (y no lo recomiendo cambiar su propiedad a nadie!), porque si queremos leer y escribir en /home, decimos al NFS que los accesos deben hacerse como root (si nuestra cuota/Inicio era de sólo lectura, esto no sería necesario). No existe el directorio /var/nfs , así que debemos crearlo y cambiar su propiedad; en mis pruebas el usuario y grupo nobody tiene el ID el 99 en ambos mis sistemas de prueba de CentOS (servidor y cliente); Cuando traté de escribir a /var/nfs desde el cliente NFS, tengo un error de permiso denegado , así que hice un chmod 777 /var/nfs para que todo el mundo pudiera escribir en ese directorio.

mkdir /var/nfs
chmod 755 /var/nfs

Ahora debemos modificar /etc/exports donde "exportamos" nuestras acciones NFS. Especificamos /home y /var/nfs como compartidos e indicamos al servidor NFS que los accesos a /home se hagan como root (para aprender más acerca de /etc/exports, su formato y opciones disponibles, echa un vistazo a)

man 5 exports

Recuerde (en este ejemplo):

  • Servidor NFS: server.example.com, dirección IP: 192.168.1.34
  • Cliente NFS: client.example.com, dirección IP: 192.168.1.33

vi /etc/exports

/home           192.168.1.33(rw,sync,no_root_squash,no_subtree_check)
/var/nfs        192.168.1.33(rw,sync,no_subtree_check)

(La opción no_root_squash permite acceder como root  a /home.)

Cada vez que modificamos /etc/exports, debemos ejecutar:

exportfs -a

para hacer efectivos los cambios.

--- Explicaconies --

Explicación de las opciones:

El archivo /etc/exports configura las exportaciones de directorios para el servicio NFS (Network File System), especificando qué directorios estarán disponibles para qué máquinas y con qué permisos. Veamos las opciones presentes en tus líneas y su significado:

Opciones en /etc/exports

  1. rw (read-write):
    Permite que el cliente tenga permisos de lectura y escritura en el directorio exportado. Si se omite, el directorio será de solo lectura (por defecto es ro).

  2. sync:
    Garantiza que todas las operaciones de escritura en el servidor se realicen de forma síncrona, es decir, se confirman en el disco antes de responder al cliente. Esto mejora la consistencia de los datos, aunque puede impactar ligeramente en el rendimiento.

  3. no_root_squash:
    Permite que el usuario root en el cliente tenga privilegios de root en el servidor. Sin esta opción, root squash está habilitado por defecto, lo que hace que el usuario root en el cliente sea "remapeado" a un usuario no privilegiado (como nfsnobody) en el servidor, para mayor seguridad.

  4. no_subtree_check:
    Desactiva la verificación de subárboles. Esta opción mejora el rendimiento al evitar que el servidor NFS compruebe que un archivo solicitado pertenece realmente al subdirectorio exportado. Es especialmente útil si se exporta un directorio que es parte de un sistema de archivos más grande.


Análisis de las líneas

  1. /home 192.168.1.33(rw,sync,no_root_squash,no_subtree_check)

    • El directorio /home es accesible desde la máquina con IP 192.168.1.33.
    • La máquina cliente tiene permisos de lectura y escritura.
    • Las operaciones son sincrónicas.
    • El usuario root en la máquina cliente tiene privilegios de root en este directorio del servidor. Esto puede ser un riesgo de seguridad si no confías completamente en el cliente.
    • La verificación de subárboles está desactivada para mejorar el rendimiento.
  2. /var/nfs 192.168.1.33(rw,sync,no_subtree_check)

    • Igual que el anterior, excepto que no se usa no_root_squash. Esto significa que root en el cliente no tiene privilegios especiales y será remapeado a un usuario no privilegiado.

Recomendaciones

  1. Seguridad:

    • El uso de no_root_squash es arriesgado y solo se debe aplicar en entornos muy controlados donde confíes en el cliente.
    • Considera eliminar esta opción en /home a menos que sea absolutamente necesario.
  2. Aislamiento:

    • Asegúrate de que solo las máquinas necesarias tengan acceso a estos directorios especificando IPs o rangos específicos.
    • Si necesitas más seguridad, considera usar firewalls o configuraciones de autenticación adicional como Kerberos.
  3. Rendimiento:

    • sync puede afectar el rendimiento si tienes muchas operaciones de escritura. Si confías en el hardware subyacente, puedes probar async para mejor rendimiento, aunque con mayor riesgo de corrupción en caso de caída.

--- Fin Explicaconies --

 


cliente:

Primero creamos los directorios donde queremos montar las acciones NFS, por ejemplo:

mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs

Posteriormente, podemos montarles como sigue (debemos hacerlo como root, o escribiendo sudo delante si es un usuario con permisos):

Recuerde (en este ejemplo):

  • Servidor NFS: server.example.com, dirección IP: 192.168.1.34
  • Cliente NFS: client.example.com, dirección IP: 192.168.1.33
mount 192.168.1.34:/home /mnt/nfs/home
mount 192.168.1.34:/var/nfs /mnt/nfs/var/nfs

 Ahora debería ver las dos acciones NFS en las salidas de "df -h"

 

[root@client ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                        28G  2.2G   25G   8% /
/dev/sda1               99M   13M   82M  14% /boot
tmpfs                  250M     0  250M   0% /dev/shm
192.168.1.34:/home     28G  2.6G   25G  10% /mnt/nfs/home
192.168.1.34:/var/nfs
                       28G  2.6G   25G  10% /mnt/nfs/var/nfs
[root@client ~]#

y la salida simple de "mount"

[root@client ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.34:/home on /mnt/nfs/home type nfs (rw,addr=192.168.1.34)
192.168.1.34:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.1.34)
[root@client ~]#

5 Ensayo

En el cliente, ahora puede intentar crear archivos de prueba en el servidor NFS:


cliente:

touch /mnt/nfs/home/prueba.txt
touch /mnt/nfs/var/nfs/prueba.txt

Ahora vaya al servidor y compruebe que si puede ver ambos archivos de prueba:


servidor:

ls -l /home/

[root@server ~] # ls -l /home/
55540 total
-rw-r--r--1 root root 0 Sep 16 17:30 prueba.txt
[root@server ~] #

ls -l /var/nfs

[root@server ~] # ls - l /var/nfs
0 total
-rw-r--r--1 65534 65534 0 Sep 16 17:30 prueba.txt
[root@server ~] #

(Tenga en cuenta las diferentes propiedades de los archivos de prueba: el recurso compartido de NFS /home obtiene acceso como root, por lo tanto /home/test.txt es propiedad de root, obtiene acceso a la cuota de /var/nfs nobody , por lo tanto, es propiedad de nobody)

6 Montaje NFS acciones durante el arranque

En lugar de montar manualmente las acciones NFS en el cliente, se puede modificar /etc/fstab para que las acciones NFS se montan automáticamente cuando el cliente se inicia.

Recuerde (en este ejemplo):

  • Servidor NFS: server.example.com, dirección IP: 192.168.1.34
  • Cliente NFS: client.example.com, dirección IP: 192.168.1.33

cliente:

Abra /etc/fstab y agregue las siguientes lineas:

vi /etc/fstab

 

[...]
192.168.1.34:/home  /mnt/nfs/home   nfs      rw,sync,hard,intr  0     0
192.168.0.34:/var/nfs  /mnt/nfs/var/nfs   nfs      rw,sync,hard,intr  0     0

 

En lugar de rw, sync, hard, intr puede utilizar opciones de montaje diferentes. Para más información sobre las opciones disponibles, echa un vistazo a

man nfs

Para probar si está funcionando su modificado /etc/fstab, reinicie al cliente:

reinicio

Después del reinicio, encontrará las dos acciones NFS en las salidas de

df .-h

 

[root@client ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       28G  2.2G   25G   8% /
/dev/sda1              99M   13M   82M  14% /boot
tmpfs                 250M     0  250M   0% /dev/shm
192.168.1.34:/home     28G  2.6G   25G  10% /mnt/nfs/home
192.168.1.34:/var/nfs
                       28G  2.6G   25G  10% /mnt/nfs/var/nfs
[root@client ~]#

y

mount

/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.34:/home on /mnt/nfs/home type nfs (rw,sync,hard,intr,addr=192.168.1.34)
192.168.1.34:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,sync,hard,intr,addr=192.168.1.34)
[root@client ~]#

 

También te puede interesar tener la información cifrada y secreta, entonces deberías leer este artículo:


Montar directorios remotos con SSHFS en Ubuntu


Comentarios  

# Andres Ortiz 15-01-2015 15:56
El artículo me ha sido de utilidad, soy nuevo en Linux. Mi pregunta es, se debe montar los dos directorios o simplemente ejemplificaste como hacerlo para directorios con permisos diferentes ?

Tengo un fileserver synology y estoy tratando de que un servidor zimbra guarde la data en una carpeta compartida nfs.
# Javier Orovengua 16-01-2015 15:56
Cito a Andres Ortiz:
El artículo me ha sido de utilidad, soy nuevo en Linux. Mi pregunta es, ¿se debe montar los dos directorios o simplemente ejemplificaste como hacerlo para directorios con permisos diferentes ?

Tengo un fileserver synology y estoy tratando de que un servidor zimbra guarde la data en una carpeta compartida nfs.


Evidentemente es un ejemplo, tu puedes montar lo que quieras, generalmente es el directorio /home/ el que contiene los usuarios, que son los que contienen los datos.

Tal vez te interese leer:

Montar directorios por ssh en Linux (para comprobar la seguridad del sistema):

******www.linuxparty.es/index.php/57-seguridad/8879-montar-directorios-por-ssh-en-linux-para-comprobar-la-seguridad-del-sistema

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías