Ke správné funkci RPC služeb je tedy potřeba, aby se jako první spustila služba rpc.portmap
a teprve potom ostatní služby.
rpcinfo -p host_name
vrací informace o službách běžících na stroji host_name
rpcinfo -n port_num -t host_name program_name
vrací informace o službě běžící na stroji host_name na tcp portu číslo port_num
Příklad výpisu příkazu rpcinfo -p localhost
Jak to tedy funguje v Linuxu:
K tomu, aby Linux umožnil sdílení dat, používá kombinaci podpory v jádře a několika démonů.
Proto je důležité mít podporu nfs zakompilovánu v jádře systému. NFS používá systém RPC
Remote procedure calls ke směrování žádostí mezi klienty a servery. To znamená, že musíme
mít zprovozněnou službu rpc.portmap na všech úrovních běhu systému, kde chceme používat NFS.
Mimo rpc.portmap používá NFS následující démony:
NFS verze 2 používá pro doručování zpráv a požadavků mezi klienty a servery protokol UDP
(NFS verze 3 umožňuje použití UDP nebo TCP nad IP). Použití UDP minimalizuje zatížení sítě,
ale vyžaduje používání tzv. cookies. Jsou to náhodně vygenerovaná čísla pro každý připojený svazek jedno, které je po autorizaci sděleno klientovi. Každý požadavek klienta na tento svazek potom musí obsahovat správnou hodnotu cookie shodnou s hodnotou uloženou na serveru.
NFS autentizace se provádí v okamžiku přijetí požadavku na připojení svazku (mount). NFS server používá soubory /etc/hosts.allow, /etc/hosts.deny a /etc/export.Přístupová práva se v NFS vztahují na stroje a nikoliv na uživatele.
Příkaz exportfs nám umožňuje dynamicky přidávat a odebírat svazky nebo adresáře, které se mají sdílet přes nfs, bez nutnosti restartování NFS služeb. Příkaz exportfs poznamenívá tyto informace do souboru /var/lib/nfs/xtab. Všechny změny se promítnou do fungování systému okamžitě, protože služby NFS čtou soubor /var/lib/nfs/xtab při každém požadavku o přístu k souboru nebo svazku.
Příkaz exportfs má nasledující volby:
Pro tento soubor platí následující pravidla:
K ovládání automount systému slouží skript autofs, který se nachází v adresáři /etc/rc.d/init.d. Jako primární konfigurační soubor se používá /etc/auto.master. Je vhodnější specifikovat potřebné parametry v souborech než je psát ručně skriptu autofs. Další výhodou je, že autofs automaticky připojuje a odpojuje sdílené svazky při startu nebo zastaveni služby autofs na různých úrovních běhu systému. K tomu, abychom mohli automount systém používat, potřebujeme mít v systému nainstalován RPM balík autofs.
Konfigurační soubory pro autofs tvoří hierartchickou strukturu. Kořenem hierarchie je soubor /etc/auto.master, který obsahuje odkazy na potomky (jednotlivé montované svazky). Tento soubor obsahuje záznamy typu:
rpcinfo
rpcinfo je služba umožňující získat informace o rpc službách běžících na daném stroji.
program verz proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 32768 status
NFS (Network file system)
NFS je nejznámější služba používající RPC. Tato služba je postavena na protokolu Sun
Network Filesystem (NFS). Tato služba umožňuje uživatelům přistupovat k souborům
na vzdálených strojích stejným způsobem jako k lokálním souborům.
V dnešní době se používají dvě verze. NFS verze 2, která se používá již delší dobu a je
součástí mnoha systémů a NFS verze 3, která přichází s některými novými vlastnostmi, jako
proměnlivá velikost file handle a lepší správa chyb.
Pro zajištění základní funkčnosti NFS nejsou nezbytné všechny tyto programy. Minimální instalace musí obsahovat minimálně rpb.mountd, rpc.nfsd a rpc.portmap.
Konfigurace serveru
Konfigurace na straně serveru není složitá. Všechny informace potřebné pro NFS ohledně svazků, které mohou být exportovány, a jejich práv jsou uloženy v souboru /etc/exports. Informace z tohoto souboru načítá program exportfs, který je předává démonům rpc.mountd a rpc.nfsd.
Jesliže spustíme příkaz exportfs bez parametrů, obdržíme seznam aktuálně exportovaných adresářů.
Soubor /etc/exports
Soubor /etc/exports slouží k nastavení adresářů, které budou exportovány a strojů, které mohou k těmto adresářům přistupovat.
Pokud nespecifikujeme volby pro dané sdílení použijí se následující implicitní hodnoty:
Při definici stroje, který smí na daný svazek přistupovat můžeme použít několik způsobů určení:
Konfigurace klienta
Každý svazek, který server umožňuje sdílet, může být připojen (mount) několika způsoby:
Použití /etc/fstab
Příklad nastavení v souboru /etc/fstab:
server:remote_dir local_dir nfs options 0 0
kde jsou významy položek následující:
Použití autofs
Nevýhoda použití nastavení v /etc/fstab je, že systém musí po celou dobu běhu systému mít alokovány prostředky potřebné pro práci s připojenými svazky. Toto není problém v případě, že montujeme jen několik málo svazků. V případě, že chceme montovat desítky svazků, je ale výhodnější použít automount systém, který nám umožní lépe zacházet s prostředky, protože montuje svazky pouze v případě jejich potřeby.
mount_point map_type
kde je význam položek následující:
Nejpoužívanější metodou definice položky mount_point je uvedení jména souboru, kde se dané informace nacházejí. Typicky je tento soubor pojmenováván auto.mount_point.
Tento sekundární soubor potom vypadá následovně:
local_dir mount_options host:remote_dir
kde je význam položek následující:
Bezpečnost NFS
Základním bezpečnostním problémem při používání NFS je skutečnost, že používáme pouze omezení přístupu podle IP (podle stroje), z kterého se uživatel připojuje a nikoliv podle uzivatele, který se připojuje. To může znamenat útok přes DNS, kdy útočník napadne DNS, a pak se tváří jako privilegovaný stroj.