Informàtica > ASI crèdit 5 > Unitats Didàctiques > Servidors > Lliçons > Network File System data última modificaciķ: 25.09.2007

Cicle formatiu: Administraciķ de sistemes informātics.
Crèdit 5: Desenvolupament de funcions en el sistema informātic.
Unitat didāctica: Servidors
Unitat de continguts: Network File System

Convencions durant la lliçó
Descripció del servei NFS
Configuració del servidor NFS
Configuració del client NFS
Seguretat en NFS
Exercicis i qüestions
Per a saber més

Convencions durant la lliçó

Per als exercicis o pràctiques que venen a continuació, si no es diu el contrari, usarem les següents convencions:
  • E-xxx és el nom de la nostra màquina i E-yyy, E-zzz, etc. són els noms de les màquines dels companys.
  • Anàlogament, 192.168.0.xxx és la IP de la nostra màquina i 192.168.0.yyy, 192.168.0.zzz, etc. són les IP's de les màquines dels companys.
  • 192.168.0.ggg serā la IP del gateway
Per a fer les pràctiques i les qüestions, cal annotar el que es fa, el resultat i per què es fa, i qualsevol altre comentari escaient, a banda del que estrictament es demana.

Hi ha dues versions d'NFS actualment en ús. NFSv2 és la més ampliament suportada, però la NFSv3 inclou més característiques. Red Hat Linux suporta ambdúes versions, i utilitza NFSv3 per defecte quan es connecta a un servidor que ho suporta. Aquí ens centrarem en NFSv2, tal i com ho fa el capítol 9. Network File System (NFS) del Manual de referencia de Red Hat Linux 9, tot i que moltes coses que apareixeran aquí s'apliquen també a NFSv3.

Descripciķ del servei NFS

Les màquines UNIX normalment utilitzen l'estàndard NFS (Network File System, sistema de fitxers en xarxa) per poder servir o accedir a directoris via xarxa. Dins una xarxa homogènia amb equips UNIX, aquest mètode permet als usuaris tenir accés a qualsevol directori del servidor, des de les màquines que tinguin permís concedit, aprofitant al màxim els recursos.

NFS (Network File System) permet a les màquines remotes muntar particions de la màquina servidor, i utilitzar-les com si estiguessin en el seu sistema d'arxius local. El servidor ha d'haver exportat prèviament aquestes particions, per a posar-les a l'abast dels clients.

Per a proporcionar la compartició d'arxius NFS, Linux utilitza una combinació de suport a nivell de kernel i de dimonis. El servei NFS utilitza el servei portmap, i per tant aquest també ha d'estar actiu en el nivell d'execució on es vulgui treballar.
Els següents són alguns dels processos que gestionen els diversos aspectes del servei NFS:

rpc.mountd — El procés que rep les peticions de muntatge des dels clients NFS, i que controla si aquestes peticions demanaen per un sistema d'arxius exportat.

rpc.nfsd — El procés que implementa la part d'usuari del servei NFS. Serveix les demandes dels clients NFS.

rpc.statd — Implementa el protocol RPC Network Status Monitor (NSM). La principal funcionalitat és donar notificació de reinici quan un servidor NFS és reiniciat. Útil per al procés nfs.lockd, que en eixe cas ha de recuperar-se de la caiguda de manera ordenada.

rpc.lockd — Procés responsable que el NLM (NFS Lock Manager) arranqui en els kernels on no ho fa automàticament. Innecesari en els kernels moderns, que ja s'encarreguen del bloqueig dels arxius.

rpc.rquotad — Un servidor RPC que proporciona informació de quotes d'usuaris a usuaris remots.

No tots són requerits per al servei NFS. Els únics que han d'estar actius són: rpc.mountd, rpc.nfsd, y portmap. La resta de dimonis proporcionen funcionalitats addicionals que només s'utilitzer si es desitja tenir-les.

Pel que fa a aspectes de seguretat (qui pot i qui no pot accedir a un servei), el procés portmap treballa amb embolcalls TCP (envolturas TCP o TCP wrappers). Consisteix en llegir els fitxers /etc/hosts.allow i /etc/hosts.deny per a veure qui pot i qui no pot accedir al servei.
Atenció! el contingut dels fitxers /etc.hostsa.allow i /etc/hosts.deny afecten tots els serveis que treballen amb portmap.

Per a saber més, veure el capítol 15. Los wrappers TCP y el comando xinetd, en els apartats 15.1. Wrappers TCP i 15.2. Archivos de configuración de Wrappers TCP del Manual de referencia de Red Hat Linux 9.

Pràctica (P1):

Mirar si al meu sistema (nivell d'arrancada 3) tinc actius els dimonis portmap, rpc.statd, rpc.mountd i nfsd.
Si hi falta el nfsd, provar d'arrancar-lo amb /sbin/service nfs start.

Configurar el nivell d'arrancada 3 per tal que el servei nfs estigui en marxa per defecte en aquest nivell.

Qüestions sobre wrappers TCP:

- Què s'aplica primer, hosts.allow o hosts.deny?
- Es pot posar restriccions d'accés al hosts.allow?
- preparar els fitxers hosts.allow i hosts.deny per a permetre el company de la dreta accedir, i rebutjar el company de l'esquerra amb un missatge de l'estil "no pots fer-ho".
- preparar els fitxers hosts.allow i hosts.deny com abans, i a més a més, que quedi constància a un fitxer /var/log/elmeulog.log de cada accés acceptat i denegat.

Configuració del servidor NFS

Arxius i comandes:

exportfs - Utilitat que manté la llista de sistemes de fitxers exportats amb NFS.
Per a més informació fer man exportfs.

/etc/exports - Fitxer que conté els sistemes de fitxers a exportar amb exportfs.
La manera d'escriure els continguts del fitxer /etc/exports es troba en el capítol 9.2.1. /etc/exports del Manual de referencia de Red Hat Linux 9.

/etc/lib/nfs/xtab - Fitxer que conté informació que ha de consultar el dimoni rpc.mountd per a permetre o no un muntatge sol.licitat per un client.

Configuració del servei NFS:

L'arxiu /etc/exports conté una línia per a cada sistema d'arxius exportat, amb els seus drets d'accés i tot.

La comanda exportfs llegeix aquest arxiu i n'obté la informació que després oferirà a rpc.mountd i rpc.nfsd per a permetre el muntatge remot d'un dels sistemes d'arxius exportats per part d'una màquina autoritzada. No cal reiniciar nfs quan s'afegeix un canvi al fitxer /etc/exports: amb les opcions adequades, la comanda exportfs inclou el canvi en /var/lib/nfs/xtab. Aquest és el fitxer consultat pel dimoni rpc.mountd per a permetre o no els muntatges, de manera que qualsevol canvi pren efecte de manera immediata.

Les opcions disponibles per a la comanda exportfs són:
  • -r — Provoca que todos los directorios listados en /etc/exports sean exportados construyendo una nueva lista de exportación en /etc/lib/nfs/xtab. Esta opción refresca la lista de exportación con cualquier cambio que hubiéramos realizado en /etc/exports.
  • -a — afegeis el significat "tots els directoris" a exportfs.
  • -o opcions — Permet especificar directoris a exportar que no es troben a /etc/exports. Va bé per a provar abans de posar com a definitiu un directori a exportar en /etc/exports.
  • -i — Ignora /etc/exports; només considera les opcions donades des de la línia de comandes.
  • -u — Fa que els directoris especificats ja no estiguen exportats. En particular, exportfs -ua suspén la compartició d'arxius NFS mentre manté els dimonis actius; per a reanudar la compartició cal fer exportfs -r.
  • -v — Mode "verbose".

Configuració del client NFS

Arxius i comandes:

showmount - Comanda que demana informació al dimoni mount d'un host remot sobre l'estat del servidor NFS en ell.
Per a més informació fer man showmount.

mount - Comanda que permet muntar un sistema de fitxers en un directori. (És més habitual que el sistema munti en arrancar el que troba a /etc/fstab que fer que l'usuari ho faci a mà cada cop que entra.) Per a més informació fer man mount.

La sintaxi és la següent:
mount -t nfs maquina:/particion/a/montar /punto/de/montaje

Nota : Se puede facilitar el montaje de una particion si la incluimos en el /etc/fstab para que se monte al iniciarse el sistema.

Per a fer el sistema més segur, es poden afegir algunes opcions:
-o nosuid Treu el bit SUID dels executables dels directoris muntats per NFS. Això impedeix que un usuari remot executi res amb privilegis en el servidor.
-o noexec Això impedeix qualsevol execució de programes que es troben a la partició muntada per NFS.

umount - comanda que permet desmuntar un sistema de fitxers en un directori. Per a més informació fer man umount.

/etc/fstab - fitxer que conté una línia per cada sistema de fitxers que el sistema ha de muntar cada cop que arranca. Aquest arxiu és llegit per l'script /etc/rc.d/init.d/netfs quan arranca el sistema.
Un ejemplo de línea /etc/fstab para montar un NFS exportado será parecida a:
<server>:</path/of/dir> </local/mnt/point> nfs <options> 0 0
<server> és el nom de la màquina, l'adreça IP o el nom de domini plenament qualificat del servidor NFS.
</path/of/directory> és la ruta del directori exportat en el servidor NFS.
</local/mount/point> especifica a on muntar en el sistema d'arxius local. Aquest punt de muntatge ha d'existir.
nfs especifica el tipus de sistema d'arxius que s'està muntant.
<options> especifica com s'ha de muntar el sistema d'arxius. Per exemple, si les opcions indiquen rw,suid, el sistema d'arxius exportat serà muntat en mode lectura-escritura y els ID d'usuari i grup que va posar el servidor seran utilitzats. Per a més opcions de muntatge, veure la secció 9.3.3. Opciones de montaje NFS comunes del Manual de referencia de Red Hat Linux 9.


Pràctica (P2):

Esbrinar quina és actualment, a la vostra màquina, la llista d'exportacions del servidor NFS.

Seguretat en NFS

Veure el capítol 9.4. Asegurar NFS del Manual de referencia de Red Hat Linux 9.
Completar-ho si cal amb man exportfs, man exports, man mount per a fer la pràctica.

Pràctica (P3):

Dir si és cert o fals (i raonar per què):
  1. NFS pot controlar quin usuari munta o no una partició del servidor NFS.
  2. NFS pot controlar a quina màquina es pot muntar o no una partició del servidor NFS.
  3. Es pot donar accés als fitxers continguts en les particions muntades remotament a través dels permisos d'accés a usuaris, grups i altres.
  4. No és la millor idea usar comodins per a especificar les màquines que tenen accés a una partició remota.
  5. Es pot forçar que un usuari que munta una partició remota sigui conegut en eixa partició com a un altre usuari.
  6. Mai no es poden executar fitxers de particions muntades remotament.
Pràctica (P4):

Què vol dir el terme "squash"? Quina relació té amb l'usuari "nobody" o "nfsnobody"? Per cert, quí és aquest "nobody" o "nfsnobody"? Per qué va bé el "root-squashing"? Per què serveix el "all-squash"?

Pràctica (P5):

Imaginem la següent situació: L'usuari PEPE té un compte en el servidor, on té assignat l'UID 542, i allí hi té alguns fitxers seus. La seva partició de treball és importada sobre una altra màquina, on l'UID 542 pertany a l'usuari PEPA. PEPE també té compte d'usuari en aquesta segona màquina, però amb l'UID 531.
Si PEPE es loga a la màquina client, què pot fer amb els seus fitxers remots?
Si PEPA es loga a la màquina client, què pot fer amb els fitxers remots de PEPE?
Què es pot fer per a evitar aquesta situació?

Exercicis i qüestions:
  1. Responeu les següents preguntes, per a preparar un eventual "control de conceptes sobre NFS ":
    1. Què vol dir NFS (acrònim i definició)?
    2. Fer un dibuix o esquema de l'estructura del servei NFS (màquina servidora i màquines clients), que mostri el funcionament del servei.
    3. Què vol dir "exportar un sistema d'arxius"?
    4. Avantatges d'utilitzar el sistema de muntatge "habitual", des dels clients.
    5. Citar els problemes de seguretat que se vos acudeixi que poden donar-se en utilitzar el servei NFS. Dir també si la configuració del servei permet solventar-los.


  2. Quins són els dimonis imprescindibles per a que funcioni el servei NFS? Explicar en dues ratlles què fa cadascun.

  3. Com pot crear-se un usuari amb un UID fixat per nosaltres, en lloc de l'UID que automàticament li assigna la comanda de creació?

  4. Crear els directoris /home/nomeslectura, i /home/lecturaescriptura.
    Exportar-los de manera que puguin utilitzar-los qualsevol usuari de qualsevol client, però que facin honor al seu nom.
    Pistes (o no): Considerar l'efecte "squash", els bits especials, els permisos sobre els directoris remots, ...)

  5. Suposar una escola amb els usuaris alu01, alu02, profe01, profe02, cadascun amb la seva pròpia màquina client.
    Donar d'alta en el servidor NFS els usuaris alu01, alu02, profe01, profe02.
    Crear en un servidor NFS els directoris /home/export/alu01, /home/export/alu02, /home/export/profe01, /home/export/profe02, i exportar-los.
    Crear en els clients NFS els usuaris alu01, alu02, profe01 i profe02. Assegurar que tenen el mateix UID tant al servidor com a les màquines clients (per què?)!!!!
    Configurar el que calgui per què les següents proves funcionin degudament:
    - Que qualsevol dels alumnes o professors, quan es loguin a la seva màquina, tinguin muntat a /home/elseunom el directori remot corresponent.
    Provar que ningú no pot muntar cap altre directori remot que no sigui el seu.

    Funcionaria tot plegat si cada usuari poguera seure a una màquina client qualsevol? (Respondre: si, no, per què i canvis a introduir en la configuració de tot plegat en el cas que es pugui resoldre d'alguna manera.)

    Afegits: Fer un muntatge d'usuaris i grups per a afegir que els professors sí poden muntar els directoris remots dels alumnes, i veure'ls.

    Afegits 2: Preparar un directori /home/export/anuncis al servidor que els alumnes puguin accedir només en lectura, i els professors en lectura-escriptura.

    Afegits 3: Preparar un directori /home/export/lliuramentsprofe01 i /home/export/lliuramentsprofe02 que tant alumnes com el professor corresponent puguin accedir en lectura i escriptura, però on els alumnes no puguin modificar o esborrar cap arxiu que no sigui seu.


Per a saber més

NFS utilitza crides a procediments remots (RPC o Remote Procedure Calls) per a funcionar. Per a saber més sobre el tema, fer man rpc.

Presentación de los servicios RPC: http://bulma.net/body.phtml?nIdNoticia=1841 . (Disponible en format PDF.) Es tracta d'una explicació sobre els serveis RPC, un dels quals és la compartició d'arxius amb NFS. Inclou una breu història d'NFS, característiques, avantatges i inconvenients. També incorpora explicacions i exemples de les comandes relatives a NFS tant de client com de servidor.

Per assegurar-nos que els serveis NFS basats en RPC es troben actius per al portmap, usar la comanda rpcinfo -p. Es veu un llistat dels programes actius per al portmap, i el número de versió, el protocol emprat per cada programa i el número de port utilitzat en la comunicació. Si no hi trobem tots els dimonis que calen per al servei NFS, rearrancar-lo amb /sbin/service nfs restart.
Fer man rpcinfo per a informar-se més sobre aquesta comanda.

Podeu mirar-vos la minilliçò MINImount.