Home-directories delen met NFS
Door Marvin Raaijmakers
Je kent het probleem wel: zit je op je computer te werken en dan moet iemand anders er even op, omdat hij/zij er een bestandje vanaf moet halen. Hiervoor is er een oplossing, namelijk het delen van je home-directory. Hierdoor heb je op iedere computer in je netwerkje toegang tot één en dezelfde home-directory, waardoor overal je instellingen en je bestanden hetzelfde zijn. In dit artikel gaan we dit (op een eenvoudige wijze) realiseren m.b.v. NFS, wat staat voor Network File System. NFS is een server-cliënt systeem, dat ons in staat stelt om directories op een server beschikbaar te stellen voor bepaalde cliënts. Een cliënt kan zo'n directory mounten, net zoals bijvoorbeeld bij een harde schijf, zodat deze onderdeel uit maakt van het bestand systeem van de cliënt.
1. De server
De server wordt de computer waar de te delen home directories op staan. Deze directories gaan we dan delen met NFS.
Zorg er eerst voor dat nfs-utils en portmap geïnstalleerd zijn. Deze pakketten zitten bij de meeste (zeg maar gerust: alle) Linux distributies. Wanneer deze pakketten geïnstalleerd zijn kunnen we aan de slag met de delen van de home directories.
Open met een text-editor het bestand /etc/exports . Iedere regel in dit bestand moet aan de volgende syntaxis voldoen:
directory cliënt(opties)
Hierin stelt directory de gedeelde directory voor. Voor cliënt moet de hostname of het ip-adres (er zijn nog meer mogelijkheden) van de cliënt, waarvoor je de directory beschikbaar wilt maken, ingevuld worden. opties wordt uiteraard vervangen door de opties voor de cliënt. Ook mogen we het ip-adres of de hostname weg laten. In zo'n geval wordt de directory beschikbaar gemaakt voor iedere computer. We mogen ook nog een andere cliënt, met de bijbehorende opties toevoegen aan de regel. Een regel kan er dus ook uitzien als:
directory cliënt1(opties) cliënt2(opties)
Of als:
directory (opties)
Nu passen we de theorie die we hier boven hebben geleerd toe op ons probleem. We kunnen dit op twee manieren doen. Namelijk door het delen van een home directory van één enkele gebruiker, of door de map /home te delen. In het laatste geval zullen de mappen van alle gebruikers (mits deze in /home staan) gedeeld worden. We doen dit door aan /etc/exports de volgende regel toe te voegen:
/home cliënt(rw)
Vervang hierin cliënt door de hostname of het ip-adres van de computer waarvoor je de directory beschikbaar wilt maken. Wil je slechts de home-directory van één gebruiker delen, dan vervang je /home door de home-directory van deze gebruiker. De optie rw geeft aan dat de cliënt mag lezen en schrijven in de directory.
Vervolgens gaan we d.m.v. de bestanden /etc/hosts.allow en /etc/hosts.deny aangeven welke cliënts gebruik mogen maken van de deamons die door NFS gebruikt worden. Eerst ontzeggen we iedere cliënt toegang in het bestand /etc/hosts.deny:
portmap: ALL lockd: ALL mountd: ALL rquotad: ALL statd: ALL
In het bestand /etc/hosts.allow geven we aan welke cliënts wel toegang hebben:
portmap: cliënt1, cliënt2 lockd: cliënt1, cliënt2 mountd: cliënt1, cliënt2 rquotad: cliënt1, cliënt2 statd: cliënt1, cliënt2
Nu kunnen we de NFS server starten. Bij de meeste distributies is hiervoor een script te vinden in /etc/init.d/ . We starten onze NFS server als volgt:
/etc/init.d/nfs start
Wanneer je dit script niet kunt vinden, kun je het hier downloaden.
2. De cliënts
Op de cliënts kunnen we de op de server gedeelde directory mounten. Omdat we willen dat dit gebeurt tijdens het opstarten voegen we hiervoor een regel toe aan /etc/fstab . Deze regel heeft dan de volgende syntaxis:
server:gedeelde-directory mountpoint fs-type options dump fsckorder
In onze situatie voegen we dus de volgende regel aan /etc/fstab toe:
server:/home /home nfs rw,hard,intr 0 0
Vervang server hierin door de hostname of het ip-adres van de server. De optie hard zorgt ervoor dat het programma dat een bestand heeft geopend, blijft hangen wanneer de server niet reageert (wanneer deze bijvoorbeeld per ongeluk word afgesloten). Wanneer de server weer opgestart is gaat het programma weer door. De tegenhanger van hard is soft. Wanneer de optie soft gebruikt wordt (niet aan te raden) zal het programma niet blijven hangen, maar is de kans groot dat het geopende bestand beschadigd.
Vervolgens moeten we ervoor zorgen dat de gebruikers waarvan de home-directories op de server gedeeld zijn, bestaan op de cliënt. Hierbij moeten de user id's (UID) en de group id's (GID) overeenkomen.
Het is aan te raden om er voor te zorgen dat dezelfde versies van programma's op de cliënt(s) en server staan. Misschien wel de gemakkelijkste manier om dit te doen, is om dezelfde distributies te gebruiken.
3. Het werkt!
We hebben nu een werkend netwerk opgezet en hoeven nu niet meer perse op die ene computer, omdat je daarop één of ander bestand op hebt opgeslagen. Zo als je wel uit dit artikel op kunt maken is het heel eenvoudig om dit doel te bereiken. Wel wil ik graag opmerken dat dit niet de meest veilige methode is.
Wanneer je meer wilt weten over NFS, is de volgende documentatie aan te raden:
- De man-page over /etc/exports, genaamd exports. (Lees voor het gebruik man-pages het artikel "Man-pages gebruiken")
- Linux NFS-HOWTO: http://nfs.sourceforge.net/nfs-howto/