NFS - Network File System

Martin Götz, xgotz@fi.muni.cz


Obsah


Poslední modifikace 13. 11. 2000

NSF úvod

NFS (Network File System) je protokol pro sdílení souborů na síti.
Vznik NFS 1984, Sun.

Charakteristiky

Bezpečnostní rizika jsou známa a často využívána pro přístup(čtení,mazání,přepis) ke všem souborům vzájemná důvěra serveru a klienta - nabourání jednoho stroje znamená přístup i ke druhému.

Jedná se o RPC službu.
Je bezestavový - nemá open(), používá jen zapiš, přečti. Proto NFS neví, které soubory klient ještě používá. To přináší výhody i problémy.
Dříve byl NFS jako běžný program (v RH balík nfs-server-xxx.rpm, nfs-server-xxx.rpm). Tak je ho možno použivat i dnes.
Dnes podpora přímo v jádře.


NFS server

Pro NFS server je potřeba zprovoznit RPC.

Pro RPC musí běžet portmapper, který mapuje čísla RPC funkcí (v RH balík portmap-xxx.rpm) jmenuje se portmap nebo rpc.portmap (!bezpečnost).

Start:

	/etc/rc.d/init.d/portmap start
Výpis informací:
	/usr/sbin/rpcinfo -p
Vzdálený přístup, lze nastavovat v /etc/hosts.allow a v /etc/hosts.deny. Nastavení /etc/exports, který obsahuje seznam adresářů přístupných pro stroje:
	jmeno_sdileneho_adresare jmena_moznych_pristupujicich_stroju(parametry)
Pro definice je možno používat ? a * (např. *.fi.muni.cz).

Příklad:

 	# sample /etc/exports file
	/               master(rw) trusty(rw,no_root_squash)
	/projects       proj*.local.domain(rw)
	/usr            *.local.domain(ro) @trusted(rw)
	/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
	/pub            (ro,insecure,all_squash)
Možne parametry viz. "man exports".

Spustíme mountd a nfsd (v RH rpc.mountd, rpc.nfsd).
Pokud uděláme změny v /etc/exports, oznámíme to mountd a nfsd pomocí /usr/sbin/exportfs.

Můžeme se přesvědčit o funkčnosti rpcinfo -p vypíše něco podobného:

	 program vers proto   port
	100000    2   tcp    111  portmapper
	100000    2   udp    111  portmapper
	100005    1   udp    874  mountd
	100005    1   tcp    876  mountd
	100005    2   udp    879  mountd
	100005    2   tcp    881  mountd
	100005    3   udp    884  mountd
	100005    3   tcp    886  mountd
	100003    2   udp   2049  nfs
	100021    1   udp   1026  nlockmgr
	100021    3   udp   1026  nlockmgr
Další informace vypíše
	/usr/sbin/showmount -a
Vytvoření rc skriptů pro rpc.mountd, rpc.nfs.

NFS klient

Potřebujeme jádro se zakompilovanou podporou NSF filesystému (přímo v jádře, nebo modul).
K NFS diskům pak přistupujeme následovně:
	mount parametry počítač:exportovaný_adresář lokální_adresář
například:
	mount -o rsize=1024,wsize=1024 aisa:/export/redhat /mnt/aisa
a odmountujeme:
	umount /mnt/aisa
Zadává se v souboru /etc/fstab:
	# device      	mountpoint	fs-type	options		dump fsckorder
	...
	anxur:/export/d16/html /www	nfs 	rw,soft,intr,vers=2 	0 0
	...
Některé volby NFS pro mountování:
Optimalizace - důležité - závislé na systému, komponentech ...



Automounter

Automounter je démon, který zajišťuje automatické mountování (odmountování) svazků podle aktuální potřeby. Takto můžeme připojovat například CD, FDD, NFS ...
Nejběžnější typy AMD (není součástí kernelu) a autofs, které potřebuje podporu v jádru.
Balíky pro RH - AMD: am-utils-xxx.rpm, autofs: autofs-xxx.rpm


Dále uvedeme popis autofs:

	/etc/rc.d/init.d/autofs start
Zprávy o chodu jsou zaznamenávány do souboru /var/log/messages - zde zjišťujeme příčiny případných problémů.

Konfigurace

Nastavení provádíme v souboru /etc/auto.master, kde jsou umístěny záznamy pro jednotlivé mountpointy. Mountpoint je místo v adresářové struktuře, kam se bude automounter snažit dynamicky přimountovat svazky dle potřeby. Ve standardní distribuci je definován mountpiont /misc, ke kterému se budou mountovat zařízení.

Formát souboru /etc/auto.master

	mountpoint map_file nastavení
příklad:
	/auto   /etc/auto.misc  --timeout 60
Každému záznamu odpovídá jeden map_file, u výše uvedeného příkladu je to soubor /etc/auto.misc, který obsahuje informace upřesňující mountování svazku v danném podstromu. Pro každý záznam je spuštěn proces automount, tomu jsou předány parametry (jméno a typ pro map_file a mountpoint).
Přístup do adresáře /auto z výše uvedeného příkladu způsobí konzultaci mapy /etc/auto.misc

Příklad map_file:

	#jméno_podadresáře [nastavení_pro_mount] umístění
	ftp		-ro,soft,intr           ftp.kernel.org:/pub/linux
	cd              -fstype=iso9660,ro      :/dev/cdrom
	floppy          -fstype=vfat            :/dev/fd0
Jméno podadresáře je porovnáváno se jménem podadresáře za mountpointem, do kterého se bude přistupovat. Např. pro přístup do /auto/cd se připojí CD-ROM mechanika.

Opět lze použít znak *, který vyhovuje všemu a také znak &, který je expandován do hodnoty jméno_podadresáře. Toho lze využít například následovně:

	*	erigona.fi.muni.cz:/home/&
kde se domovské adresáře mountují zvlášť pro každého uživatele:
	mount erigona.fi.muni.cz:/home/userx /home/userx


Další informace

NFS HOWTO
man nfs(5), rpc.nfsd(8), rpc.mountd(8), exports(5), autofs(8)
Automount mini-HOWTO