El sistemas de archivos en red (NFS - Network File System) le permite montar un directorio de un host remoto en su árbol de directorios local como si de un dispositivo físico se tratase; lo cual le permitirá acceder a archivos y directorios remotos como si estuviera accediendo a ficheros locales, compartir directorios comunes en sistemas similares o incluso crear terminales diskless. En este tutorial se le guiará en la configuración de una red NFS.
Preparar el kernel
Para poder usar NFS, ya sea como cliente o servidor, precisará activar soporte para NFS en el kernel. Si no está seguro si tiene activado soporte para NFS en su kernel, puede verificarlo consultando /proc/filesystems
agd-desktop # cat /proc/filesystems | grep -i nfs nodev nfs nodev nfsd
En este caso, como podrá observar, está compilado el soporte para NFS en modo servidor (nfsd) y cliente (nfs). Tenga en cuenta de que si usted ha compilado el soporte para nfs como módulo, en /proc/filesystems no habrá referencias a él hasta que lo cargue. Si usted tiene duda, siempre puede consultar los módulos disponibles usando lsmod; y si la salida es larga filtre el contenido con lsmod | grep -i nfs.
Si precisa activar el soporte para NFS, podrá hacerlo en:
Configurar el servidor NFS
Por defecto no se comparte ningún directorio por NFS, y es usted quien deberá indicar que directorios desea exportar a otras máquinas. El archivo de configuración del servidor de NFS (/etc/exports) se estructura en líneas, donde cada una define el directorio a exportar seguido del ordenador -u ordenadores- que tiene acceso al recursos compartido y entre paréntesis las opciones de exportación separadas por comas. A continuación podrá ver un ejemplo de un archivo de configuración de NFS:
agd-desktop # nano /etc/exports # /etc/exports: NFS file systems being exported. See exports(5). /usr/portage 192.168.1.120(sync,ro,no_subtree_check) /usr/portage/distfiles 192.168.1.120(sync,rw,subtree_check,no_root_squash) /tmp 192.168.1.120(sync,rw,subtree_check,no_root_squash) /media/net-rw/donkey/incoming 192.168.1.120(sync,rw,subtree_check,all_squash,anonuid=1003,anongid=100) 192.168.1.0/24(sync,ro,all_squash,subtree_check) /media/net-rw/donkey/temp 192.168.1.120(sync,rw,subtree_check,all_squash,anonuid=1003,anongid=100)
Las opciones más comunes son:
- ro El directorio será exportado en modo solo lectura.
- rw El directorio será exportado en modo solo lectura-escritura.
- root_squash Mapea las peticiones con uid 0 (usuario root) a uid 65534 (normalmente asociado al usuario nobody).
- no_root_squash Permite el acceso como usuario root, desde el cliente, al directorio exportado.
- all_squash Mapea todas las uid y gid a la cuenta anónima.
- anonuid y anongid Permite especificar el uid y el gid de la cuenta anónima.
- subtree_check Verifica que el archivo solicitado por el cliente se encuentra dentro del árbol del directorio exportado. Supone un aumento de la seguridad cuando está exportando un subdirectorio de un sistema de ficheros.
- no_subtree_check Desactiva la verificación. Supone un aumento de velocidad en las transferencias. Es común utilizarlo cuando exporta un sistema de ficheros al completo.
- sync Responde a las peticiones de escritura del cliente después de que estás sean trasladadas al disco. Previene perdidas y corrupciones de datos al ser apagado el equipo.
- async Responde a las peticiones de escritura del cliente antes de que estás sean trasladadas al disco. Si ocurre un apagado repentino, supondrá la pérdida y/o corrupción de datos.
- link_relative Convierte los enlaces simbólicos a enlaces relativos.
- link_absolute No convierte los enlaces simbólicos a enlaces relativos.
Si cambia la configuración de /etc/exports, recuerde recargar los nuevos valores con exportfs -raSi usted quiere consultar la lista de host que están accediendo a sus recursos compartidos a través de NFS, puede hacerlo usando el comando showmount. Además con las opciones -a, -d y -e podrá ampliar la información mostrando host:recurso compartido, recurso compartido y la lista de directorios a exportar respectivamente. La opción que normalmente se usa, por ser la más completa es showmount -a.
agd-desktop # showmount -a All mount points on agd-desktop: 192.168.1.120:/home/p2p/mldonkey/incoming 192.168.1.120:/home/p2p/mldonkey/temp 192.168.1.120:/media/net-rw/donkey/incoming 192.168.1.120:/media/net-rw/donkey/temp 192.168.1.120:/tmp 192.168.1.120:/usr/portage 192.168.1.120:/usr/portage/distfiles 192.168.1.121:/media/net-rw/donkey/incoming 192.168.1.136:/tmp
Configurar el cliente NFS
Recuerde que los clientes, al igual que el servidor, deben tener soporte para NFS en el kernel ya sea compilado estáticamente o como módulo. Para acceder a un directorio exportado por un servidor NFS, deberá montarlo dentro de su árbol de directorios, a través del comando mount (mount -t nfs servidor-nfs:ruta directorio-donde-montar opciones) o bien añadiendo una entrada a su /etc/fstab para que se automonte en el inicio del sistema
agd-server # mount -vt nfs 192.168.1.20:/media/net-rw/donkey/incoming /media/donkey/ mount.nfs: timeout set for Tue Apr 26 09:17:09 2011 mount.nfs: trying text-based options 'vers=4,addr=192.168.1.20,clientaddr=192.168.1.120' mount.nfs: mount(2): Protocol not supported mount.nfs: trying text-based options 'addr=192.168.1.20' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: trying 192.168.1.20 prog 100003 vers 3 prot TCP port 2049 mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying 192.168.1.20 prog 100005 vers 3 prot UDP port 47384 192.168.1.20:/media/net-rw/donkey/incoming on /media/donkey type nfs (rw)
La lista de opciones que pueden ser pasadas a mount las puede leer en la página man de mount, aunque las más interesantes son:
- timeo=n Establece el tiempo, expresado en décimas de segundos, que esperará el cliente de NFS al servidor de NFS.
- hard Marca el volumen para ser montado físicamente. Cuando expira el tiempo de operación, muestra un error por consola y continua indefinidamente.
- soft Marca el volumen para ser montado lógicamente. Cuando expira el tiempo de operación, se produce un error de E/S y el proceso que intentaba acceder al disco es informado.
- initr Permite enviar una señal para interrumpir una llamada NFS. Con esta opción podrá abortar la operación cuando el servidor no responde.
Si desea que su sistema monte automáticamente, en cada inicio del sistema, los directorios exportados por un servidor NFS, deberá añadir una entrada al fichero /etc/fstab. Su /etc/fstab deberá quedar similar a:
agd-server # nano /etc/fstab # /etc/fstab: static file system information. /dev/vda1 /boot ext2 defaults,noatime 1 2 /dev/vda2 / ext4 defaults 0 1 /dev/vdb1 none swap sw 0 0 192.168.1.20:/usr/portage /usr/portage nfs defaults 0 0 192.168.1.20:/usr/portage/distfiles /usr/portage/distfiles nfs defaults 0 0 192.168.1.20:/media/net-rw/donkey/incoming /media/p2p/mldonkey nfs defaults 0 0 192.168.1.20:/media/net-rw/donkey/temp /home/p2p/mldonkey/temp nfs defaults 0 0 192.168.1.20:/tmp /tmp nfs defaults 0 0
2 comentarios:
#-
Unknown
dijo...
-
-
martes, 17 de mayo de 2011, 13:39:00 CEST
#
-
Unknown
dijo...
-
-
miércoles, 18 de mayo de 2011, 0:12:00 CEST
Hace ya un buen saco de años que no utilizo NFS entre otras cosas por su débil seguridad basada en la dirección IP del cliente. He leído el post y he visto que la configuración se asemeja a la que utilizaba y que existe una implementación que hace uso de ACLs. ¿Es esta una mejora en la seguridad importante? Y si fuese así ¿sería merecedora de un nuevo post con su configuración?
Saludos.
Mr. Brown no soy un usuario de ACLs, y por tanto tal vez mi visión sea errada, pero a mi modo de ver ACLs no aporta seguridad sino plasticidad.
El control de acceso sigue la misma política independientemente de que usemos ACLs o no: si estas en la lista de host permitidos puedes pasar, y una vez dentro tus privilegios serán determinados por quien seas (por tu usuario) así como la configuración del directorio exportado.
El extra de las listas de control de acceso radica en que no estás limitado a propietario-grupo-otros, sino que puedes especificar una política mucho más amplia, con muchos usuarios y cada uno de ellos con distintos permisos.
Publicar un comentario