Verder Terug Inhoud

3. Een NFS server opzetten

3.1 Vereisten

Voordat je doorgaat met het lezen van de HOWTO moet je kunnen telnetten van de client naar de server en andersom. Als dat niet werkt moet je in de networking/NET-3 HOWTO kijken en je netwerk goed configureren.

3.2 Stap Een

Voordat we ook maar iets kunnen doen moeten we eerst een werkende NFS server hebben. Als je aangesloten bent op een afdelings- of universiteitsnetwerk zijn er meestal al NFS servers aanwezig. Als deze je toegang verschaffen, of als je deze HOWTO leest om tot een van ze toegang te krijgen dan kun je deze sectie over slaan en naar de sectie over hoe je een NFS client opzet gaan.

Als je een NFS server onder een ander OS dan Linux wilt opzetten, lees dan de manuals om uit te vinden hoe je de NFS server opzet en hoe je het filesysteem exporteert met NFS. Er is een aparte sectie in deze HOWTO hoe je dat doet op vele andere systemen. Nadat je dat allemaal hebt uitgezocht kun je doorgaan met het lezen van de volgende sectie van deze HOWTO. Of je leest deze sectie verder omdat enkele van de dingen misschien hetzelfde zijn dan maakt de soort machine je gebruikt als server niet uit.

Als je linux 2.2 draait lees dan eerst de Linux 2.2 sectie voor je doorgaat.

Degenen die nog steeds aan het lezen zijn moeten een aantal programma's installeren en configureren.

3.3 De portmapper

De portmapper in Linux heet portmap of rpc.portmap. De manpage op mijn systeem zegt dat het een "DARPA poort naar RPC programma nummer mapper" is. Het is de eerste security hole die je openzet als je deze HOWTO leest. Hoe je een van die holes weer kunt sluiten staat in de security sectie. Die ik je, alweer, vriendelijk doch dringend aanbeveel te lezen.

Start de portmapper. Dat is portmap of rpc.portmap en zou moeten staan in de /usr/sbin directory (op sommige machines heet hij rpcbind). In dit stadium kun je hem met de hand starten, maar hij moet elke keer als je opstart gestart worden, dus moet je een rc script maken/veranderen. Je rc scripts zijn nauwkeurig gedocumenteerd in de manpage /etc/rc.d, /etc/init.d of /etc/rc.d/init.d. Als er een script is dat zoiets als inet heet, is dit meestal het goede script om te veranderen. Maar wat te doen of te schrijven valt buiten het bereik van deze HOWTO. Start de portmapper, en kijk of hij het doet door ps aux te draaien en dan rpcinfo -p. Leeft hij? Goed.

Oh, een ding. Toegang tot je portmapper is geregeld door de inhoud van je /etc/hosts.allow en /etc/hosts.deny bestanden. Als rpcinfo -p faalt, maar je portmapper draait, kijk dan in deze files. Zie de security sectie voor de details van deze files.

3.4 Mountd en nfsd

De volgende programma's die we draaiende moeten hebben zijn mountd en nfsd. Maar eerst veranderen we een andere file. /etc/exports deze keer. Ik wil het filesysteem in /mn/eris/local dat op de machine eris leeft beschikbaar stellen aan een machine genaamd apollon. In mijn /etc/exports op eris zet ik dan:


/mn/eris/local  apollon(rw)

De hierboven gegeven regels geven apollon lees/schrijf toegang tot /mn/eris/local. In plaats van rw kan ik ook ro zeggen. ro staat voor read only (als je niets invult is de default read only). Er zijn andere opties die je mee kan geven, en ik zal enkele die te maken hebben met security later beschrijven. Ze zijn allemaal opgesomd in de exports man page die je minimaal een keer in je leven moet lezen. Er zijn ook betere manieren dan al je hosts in de exports file te zetten. Je kan bijvoorbeeld netgroepen gebruiken als je NIS (of NYS) (NIS was bekend als YP) draait en domeinwildcards en IP-subnets gebruikt als hosts die iets mogen mounten. Maar weet wie er toegang tot je systeem kan krijgen op de onbevoegde manieren als je zulke losse permissies gebruikt.

NB: Deze exports file heeft niet de zelfde syntax als andere Unixen. Er is een apparte sectie in deze HOWTO over andere Unixen en hun exports files.

Nu zijn we klaar om mountd te starten (of misschien heet dat rpc.mountd) en dan nfsd (deze kan rpc.nfsd heten). Zij lezen beide de exports file.

Als je /etc/exports verandert moet je zeker weten dat nfsd en mountd ook weten dat deze file veranderd is. De traditionele manier is exportfs draaien, maar veel Linux-distributies hebben geen exportfs programma. Als je geen exportfs hebt kun je in plaats daarvan dit script gebruiken:


#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo re-exported file systems

Save het in, pak hem beet, /usr/sbin/exportfs, en vergeet het niet te chmod a+rx. Als je nu de exports file verandert, draai je daarna exportfs, als root.

Nu moet je checken of mountd en nfsd goed werken. Eerst met rpcinfo -p. Dat zou iets als dit moeten laten zien:


   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    745  mountd
    100005    1   tcp    747  mountd
    100003    2   udp   2049  nfs
    100003    2   tcp   2049  nfs

Zoals je ziet heeft de portmapper aangekondigd dat hij in de lucht is, net als mountd en nfsd.

Als je rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused, RPC_PROG_NOT_REGISTERED of iets anders wat daar op lijkt krijgt, dan draait de portmapper niet. Of je hebt iets in /etc/hosts.{allow,deny} staan dat de portmapper antwoorden verbiedt, zie de security section voor details van deze files. Als je krijgt No remote programs registered. dan wil de portmapper niet met je praten, of er is iets kapot. Kill nfsd, mountd en de portmapper en probeer het nog eens.

Behalve met rpcinfo of de portmapper draait kun je ook met ps kijken. De portmapper zal de services altijd blijven melden, zelfs als het programma dat ze aangeroepen heeft is gecrashed. Dus een ps check is slim als er iets is niet lijkt te werken.

Je moet natuurlijk de rc files van je systeem aanpassen om mountd en nfsd, net als de portmapper, als je boot te starten. Het kan goed dat de scripts al bestaan op je machine, je dan moet de kritieke sectie uncommenten of ze activeren in de goede runlevels.

Man pages die je nu moet kennen zijn: portmap, mountd, nfsd en exports.

Als je alles hebt gedaan zoals ik heb gezegd, kun je nu aan de NFS client sectie beginnen.


Verder Terug Inhoud