Network File System

Network File System (NFS) je internetový protokol pro vzdálený přístup k souborům přes počítačovou síť. Protokol byl původně vyvinut společností Sun Microsystems v roce 1984, v současné době má jeho další vývoj na starosti organizace Internet Engineering Task Force (IETF). Funguje především nad transportním protokolem UDP, avšak od verze 3 je možné ho provozovat také nad protokolem TCP.

V praxi si můžete prostřednictvím NFS klienta připojit disk ze vzdáleného serveru a pracovat s ním jako s lokálním. V prostředí Linuxu se jedná asi o nejpoužívanější protokol pro tyto účely.

Za kolegu NFS lze považovat protokol NIS (Network Information Service), který slouží k distribuci nejrůznějších konfiguračních dat v počítačové síti (např. uživatelé, doménová jména aj.).

Konfigurace serveru

NFS server se nastavuje pomocí konfiguračního souboru /etc/exports, který na jednotlivých řádcích obsahuje definice sdílených adresářů. Jako první je název adresáře a pak seznam povolených klientů (zde jsou uvedeny názvy serverstanice a IP adresa) s přidanými volitelnými parametry:

/usr 10.1.2.3(ro) stanice(ro)

/home 10.1.2.3(rw,no_root_squash) stanice(rw)

Parametry

·         ro (read-only) – pouze pro čtení

·         rw (read-write) – povoleno čtení i zápis

·         no_root_squash – mapovat požadavky uživatele root na běžného uživatele (obvyklenobody)

Konfigurace klienta

Klient připojuje adresář ze serveru do svého adresářového stromu stejným způsobem, jako jsou připojovány jednotlivé systémy souborů. V současné době je obvykle nutné na klientovi spustit též démona portmap:

mount -t nfs server:/home /home

mount -t nfs server:/usr /mnt/usr-from-server

Od této chvíle může klient s daty v adresáři /home a /mnt/usr-from-server pracovat stejně, jako kdyby byly umístěny na lokálním počítači.

NFS verze 4

V dnešních moderních distribucích se téměř výhradně setkáme s nástupcem NFS verze 4 který se, ačkoli z uživatelského hlediska vypadá téměř totožně, tak se přece jen hodně od svého přechůdce liší. Základní odlišnosti jsou:

1.    Pseudo file systém - NFSv4 vyžaduje exportovat nějaký adresář jako kořen. To se provádí dodatečným parametrem fsid=0

2.    Stavový protokol - na rozdíl od svého předchůdce, který byl v jádru bezestavový (démony rpclockd a spol mu sice dodávají stavovost ale nejsou definovány v RFC a nejsou součástí protokolu NFS) je NFSv4 protokol stavový, což mu dodává, kromě nevýhody větší složitosti i pár výhod, jako například delegování čtení nebo zápisu na klienta, nebo například zamykání souborů. NFSv4 nepotřebuje portmapper.

3.    Přenos ACL - NFSv3 přenos přístupových práv neřeší. Naproti tomu jsou ACL nedílnou součástí protokolu NFSv4. Nutno ale říci, že protokol NFSv4 definuje vlastní formát ACL, který je odlišný (lepší) od formátu Posix ACL, který mimochodem nebyl nikdy standardizován.

4.    Jednodušší tunelování přes firewall - na rozdíl od svého předchůdce vyžaduje NFSv4 pro svůj běh mezi klientem a serverem otevřen jen jediný, předem definovaný port.

5.    mapování uživatelů - NFSv4 byl vyvíjen primárně jako multiplatformní síťový souborový systém, takže na rozdíl od svého předchůdcenepřenáší User ID (UID, typické pro unix), ale doménové jméno ve formátu username@doména. Z tohoto důvodu je nutné, aby na Unixových systémech (klientu i serveru) běžel pomocný program starající se o překlad jmen na UID - obvykle je to démon rpc.idmapd

6.    větší bezpečnost - kromě klasické "systémové" bezpečnosti, která ja notoricky nebezpečná protokol NFSv4 vyžaduje i možnost využití silnějších bezpečnostních mechanismů - Kerberos

RFC dokumenty

·         RFC 1094: NFS: Network File System Protocol specification.

·         RFC 1813: NFS Version 3 Protocol Specification.

·         RFC 2224: NFS URL Scheme.

·         RFC 2339: An Agreement Between the Internet Society, the IETF, and Sun Microsystems, Inc. in the matter of NFS V.4 Protocols.

·         RFC 2623: NFS Version 2 and Version 3 Security Issues and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5.

·         RFC 2624: NFS Version 4 Design Considerations.

·         RFC 3010: NFS version 4 Protocol.

·         RFC 3530: Network File System (NFS) version 4 Protocol.