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.
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.
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.
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.