Sistema de ficheiros en rede: NFS

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Introdución

O Network File System ou NFS é unha solución adoptada polos sistemas operativos Linux para compartir ficheiros (exportar na terminoloxía NFS) en redes TCP/IP. Data do ano 1984 e a empresa Sun Microsystems distribuíno con licenza GPL o que favoreceu a súa adopción por parte da industria como un estándar. O protocolo NFS está especificado nos RFC 1094 (versión 2), RFC 1813 (versión 3) e RFC 3530 (versión 4).

O funcionamento do sistema NFS baséase na montaxe dun directorio remoto que previamente foi compartido noutro equipo. Unha vez montado o directorio (ou conectada a unidade de rede, en terminoloxía Windows) o usuario ve os ficheiros remotos como se fosen do propio equipo local.

Archivo:Ejemplo.jpg

Aínda que frecuentemente segue unha arquitectura cliente/servidor, calquera equipo na rede pode compartir un cartafol, é dicir, trátase dunha arquitectura peer to peer, onde a información pode estar distribuída en varios equipos.

Úsase moito en LAN xa que a compartición de recursos normalmente mellora a produtividade e pode facilitar a administración. Por exemplo, podemos ter un equipo na LAN que comparta todo o software de instalación requirido na empresa. Así, en caso de que un equipo necesite instalar algún programa podemos conectarnos a el mediante NFS e instalalo. A máquina que subministra o software remotamente dise que está exportando os ficheiros ao resto da rede e, neste caso, faría funcións de servidor de ficheiros.

Por que NFS

Entre as finalidades do NFS están as seguintes:

  • Evitar redundancia de información. É frecuente que os usuarios compartan datos como informes, novas, etc. Ubicando toda esa información nun único punto evitamos a redundancia en cada un dos equipos.
  • Facilitar a xestión da LAN. Permite configurar os equipos para que o HOME dos usuarios se monte mediante NFS dende un servidor. Isto permite ter centralizados os HOME dos usuarios, facilitando a súa administración. A centralización dos datos tamén permite ter ficheiros de configuración do sistema nun único nodo da rede. Por último, tanto o sistema operativo como os programas poden instalarse dende un servidor NFS nos clientes.

Instalación do cliente e do servidor

Para ter o NFS no servidor hai que instalar o paquete nfs-kernel-server tecleando o seguinte:

sudo apt-get install nfs-kernel-server

O servizo arráncase do xeito habitual:

sudo /etc/init.d/nfs-kernel-server start

No cliente hai que instalar o paquete nfs-common:

sudo apt-get install nfs-common

Configuración e funcionamento

Servidor

O ficheiro de configuración principal do NFS é o /etc/exports, onde de configura o que se desexa compartir, a quen e con que permisos. Cada liña deste ficheiro, que só podemos editar con permisos de root, fai referencia a un recurso compartido. Este ficheiro configúrase no servidor e ten o seguinte formato:

<ruta do recurso a compartir/exportar>  <máquinas cliente>(permisos)

Por exemplo:

/exportacions/comun    10.1.1.0/24(rw,no_root_squash)

A máquina cliente pode ser un nome DNS, unha IP ou unha subrede. Se non se fai referencia a ningunha máquina, calquera equipo poderá facer uso do recurso compartido.

O parámetro permisos controla o acceso ao recurso compartido. Algunhas opcións importantes son:

  • ro/rw (read only/read and write). Permite só a lectura (ro) ou a modificación e escritura (rw). O sistema de ficheiros en Linux ten o seu propio sistema de permisos, polo que ten que haber coherencia entre os permisos que ten un recurso compartido e os propios do sistema. Así, se asignamos a unha exportación os permisos de rw e os permisos do sistema, onde se monta o recurso vía NFS, son rwxr-x---, non se poderá escribir nel.
  • async/sync. Por defecto, as operacións sobre ficheiros son síncronas (sync). Por exemplo, en caso dunha solicitude de escritura no equipo cliente, o servidor escribirá fisicamente os datos no disco, e se é necesario, actualizará a estrutura de directorios, antes de devolver unha resposta ao cliente. Isto garante a integridade dos ficheiros.
  • no_root_squash / root_squash / all_squash / no_all_squash. Cando un usuario monta un recurso compartido pode facelo co seu identificador de usuario (opción no_all_squash). Se non se quere que isto sexa así, asociaráselle como conta a do usuario nobody (opción root_squash no caso do usuario root e all_squash para o resto dos usuarios). Se queremos que os accesos que se fagan como root se manteñan como tal usarase a opción no_root_squash (por motivos de seguridade esta opción hai que usala con cautela). A opción por defecto e no_all_squash e root_squash.
  • noaccess. Fai que un cliente concreto non teña acceso a un recurso. Pode ser útil se queremos que varias máquinas dunha LAN teñan acceso ao recurso, agás unha delas.

Existen máis opcións que poden consultarse mediante as páxinas de manual:

man exports

Tras modificar o ficheiro /etc/exports hai que reiniciar o servizo ou executar o comando exports, que forzará a exportación dos recursos especificados.

sudo exportfs –a.

Cliente

Para poder usar os recursos compartidos é necesario conectarse a ese recurso, como se fose unha unidade de rede en Windows. En Linux, a esta acción chámaselle montar. O comando mount é o que permite montar un cartafol remoto. A súa sintaxe é a seguinte:

mount –t nfs <IPMaquina>:<recurso_compartido> <destino>

A opción -t nfs indica que o que se quere montar é un sistema de ficheiros de tipo NFS. Existen outros tipos de filesystems como vfat, ext2, etc.

O parámetro <IPMaquina>:<recurso_compartido> indica a dirección IP do servidor NFS e o cartafol que se vai compartir. Tamén se pode usar o nome de dominio no canto da dirección IP.

O parámetro <destino> é un directorio local (que debe existir e estar baleira) onde se monta o cartafol remoto. E contornos Windows este parámetro sería a unidade de rede (Z:, H:, etc.).

Mara desmontar o recurso (desconectar a unidade de rede en terminoloxía Windows) úsase o comando umount:

sudo umount /home/alumno/compartido

Co comando mount, se apagas o computador, cando o volvas arrancar non aparecerán os cartafoles que montaches. Ademais, hai que montar as unidades manualmente. Para que a montaxe sexa automática e permanente úsase o ficheiro /etc/fstab, no cliente. A sintaxe do ficheiro fstab é a seguinte:

<recurso_compartido> <destino> <sistema_de_ficheiros> <opcións> <fsck>

Os tres primeiros parámetros, <recurso_compartido> <destino> <sistema_de_ficheiros>, xa se explicaron.

As <opcións> son un conxunto de parámetros separados por comas (sen espazos) e inclúen os seguintes:

  • auto/noauto. Realiza a montaxe de forma automática ou hai que facelo expresamente. Hai que asegurarse que o recurso compartido está dispoñible ou se consumirán recursos como consecuencia dos intentos de conexión sen éxito.
  • user/nouser. Permite a un usuario normal que poida montar ou desmontar o sistema de ficheiros.
  • ro/rw. Monta o recurso con permisos de lectura ou tamén de escritura.
  • exec/noexec. Permite que se poidan executar os ficheiros executables que conteña o recurso ou non.
  • defaults. Inclúe as opcións por defecto, entre elas rw,exec,auto,nouser,async.

O parámetro <fsck> (acrónimo de FileSystem ChecK) indica se se debe verificar o estado do sistema de ficheiros ao reiniciar. O valor por defecto é 0 que indica que non se levará a cabo.

Se se quere forzar a montaxe do recursos compartidos sen necesidade de reiniciar o equipo hai que executar:

sudo mount -a

Por último, o seguinte comando permítenos ver as carpetas que exporta por NFS un equipo e que están montadas:

showmount -a IPequipo

Permisos

Xa vimos que os permisos de compartición por NFS non exclúen aos permisos do sistema, senón que prevalecen os máis restritivos:

  • Se un cartafol está compartido con permiso NFS de lectura e escritura pero nos permisos do sistema só dispomos de permiso de lectura, non poderemos escribir.
  • Se un cartafol está compartido con permisos NFS de lectura e dispomos de permisos de lectura e escritura no sistema, tampouco poderemos escribir.

Para poder escribir necesitaremos dispor permiso de lectura e escritura tanto nos permisos do sistema como nos permisos de compartición NFS.

De igual forma, se compartimos o cartafol /home con permisos de lectura e escritura pero o usuario xoán só ten acceso ao cartafol /home/xoán, non poderá acceder a ningunha outro cartafol dentro de /home xa que os permisos do sistema llo impedirán.

Cando se comparte por NFS, recoméndase restrinxir ao máximo os permisos. Se os usuarios non teñen a necesidade de escribir, debemos compartir con permiso de só lectura. Se os usuarios só se conectan desde a rede 192.168.0.0/24, debemos permitir o acceso só desde devandita rede.

Limitacións

NFS presenta unha serie de inconvenientes estre os que habería que destacar:

  • Os permisos concédense ás máquinas, non aos usuarios, polo que non é un sistema suficientemente flexible para as redes actuais, onde isto é unha necesidade.
  • Está pensado para redes homoxéneas formadas por equipos Unix/Linux.
  • Un usuario normal non pode compartir os seus propios ficheiros se non coñece a clave de root. Tampouco pode modificar o ficheiro /etc/fstab para montar unidades de rede.

Para solventar estes e outros problemas aparece Samba que se verá no seguinte punto.

--Arribi 12:13 6 oct 2009 (BST)