Původní dokument pochází z adresy http://fdmech.fd.cvut.cz/nastenka/Linux-seminar/reports/NFS/
NIS je poměrně složitý, ale velmi pružný a
univerzální systém pro zpracování databázových údajů o uživatelích,
skupinách, souborových systémech, apod. Je schopen zpracovávat databáze
roztroušené po celé síti a jeho cílem je zjednodušit správu počítačové
sítě. Umožňuje, aby se informace o uživatelských účtech (které jsou
uloženy v souboru /etc/passwd
) udržovaly na jediném serveru a aby se s nimi jednoduše manipulovalo.
Síťový informační systém poskytuje prostředky pro
obecný přístup k databázím, které lze využít k šíření informací všem
hostitelům v síti. To umožňuje, aby síť vypadala jako jediný systém se
stejnými účty na všech hostitelích. Podobným způsobem je možné používat
systém NIS k šíření informací o hostitelích, které jsou uloženy v
souboru /etc/hosts
, na všechny počítače v síti.
Systém NIS je založen na balíku RPC a skládá se ze serveru, z knihovny na straně klienta a z několika administrativních nástrojů. Tento systém vyvinula firma Sun. Původně se systém NIS nazýval Yellow pages (Žluté stránky), neboli YP. Toto označení se ještě stále používá jako informativní odkaz na tuto službu. Yellow pages jsou ovšem ochrannou známkou společnosti British Telecom, která požadovala po firmě Sun, aby tento název přestala používat. I s odstupem času však zůstaly některé názvy zakořeněny a zkratka YP se proto stále používá jako prefix názvů většiny příkazů, které se vztahují k sytému NIS, například ypserv, ypbind apod.
Pro operační systém Linux existuje více implementací systému NIS. Tzv. tradiční implementace, implementace NIS+ a zvláštní implementace označovaná jako NYS.
Kód pro klienta v tradiční implementaci je součástí standardní knihovny pro jazyk C a je již instalován na většině systémů Linux.
Systém NIS+ je strukturován zcela odlišným způsobem. Místo přímého jmenného prostoru s oddělenými doménami systému NIS používá hierarchický prostor s názvy, který je podobný jmennému prostoru systému DNS. Místo map jsou používány tzv. tabulky, které jsou složeny z řádků a sloupců, kde každý řádek reprezentuje objekt databáze systému NIS+, zatímco sloupce obsahují vlastnosti objektů, které systém NIS+ zná a o něž se stará. Každá tabulka příslušné domény systému NIS+ v sobě zahrnuje i tabulky svých rodičovských domén. Mimoto může položka v tabulce obsahovat spojení na další tabulku. Tyto vlastnosti umožňují strukturovat informace mnoha způsoby.
NYS podporuje jak holý systém NIS, tak i mnohem dokonalejší systém NIS. Balík NYS neposkytuje pouze množinu nástrojů a server, ale přidává do knihovny také celou novou sadu funkcí, které se časem zřejmě stanou součástí standardní knihovny libc. Tyto funkce obsahují nové konfigurační schéma pro rozlišování názvů hostitelů, které nahrazuje současné schéma používající soubor host.conf.
V rámci konfigurace systému NIS můžeme specifikovat servery NIS, podřízené počítače a klienty. Servery jsou počítače, z nichž pocházejí databáze NIS. Podřízené počítače jsou počítače, kam server kopíruje své databáze. Klienti NIS jsou počítače, které požadují databázové informace ze serverů a z podřízených počítačů. Pořízené počítače existují proto, aby se snížilo zatížení serverů NIS. Jestliže nejsou v konfiguraci systému NIS podřízené počítače nastaveny, pak jsou všechny požadavky na systém NIS obsluhovány z jediného počítače.
Systém NIS uchovává databázové informace v tzv. mapách, které obsahují páry klíčových hodnot. Mapy jsou uloženy na centrálním hostiteli, na němž běží systém NIS a z něhož mohou klienti získávat informace pomocí různých volání procedur RPC. Poměrně často bývají mapy uloženy v souborech DBM.
Vlastní mapy jsou obvykle generovány z hlavních textových souborů, jako jsou
například soubory /etc/hosts
nebo /etc/passwd
. Pro
některé soubory se vytvoří několik map, pro každý typ vyhledávacího klíče se
vždy vytvoří jedna mapa. Například v souboru hosts
můžete hledat
jak název hostitele, tak i IP-adresu. Z tohoto souboru budou takto odvozeny dvě
mapy, které se budou nazývat hosts.byname
, resp.
hosts.byaddr
.
Příklady běžně se vyskytujících map společně se soubory, ze kterých byly vygenerovány:
/etc/hosts | hosts.byname | hosts.byaddr |
/etc/networks | networks.byname | networks.byaddr |
/etc/passwd | passwd.byname | passwd.byuid |
/etc/group | group.byname | group.bygid |
/etc/services | services.byname | services.bynumber |
/etc/rpc | rpc.byname | rpc.bynumber |
/etc/protocols | protocols.byname | protocols.bynumber |
/usr/lib/aliases | mail.aliases |
Pro některé mapy se používají přezdívky, které jsou kratší a z tohoto důvodu se lépe píší. Kompletní seznam přezdívek, kterým nástroje systému NIS rozumí, se spustí příkazem:
$ ypcat -x
Při vytváření systému NIS je nutné nejprve vymezit
doménu, v níž bude systém působit. Její jméno nemusí být shodné se
jménem oblasti pro systém DNS. Doménové jméno se nastavuje
prostřednictvím příkazu dommainname
.
Tyto domény určují, na který server se budou
aplikace dotazovat. Pokud je v dané doméně více serverů, spoléhají
tradiční implementace systému NIS na speciálního démona nazývaného ypbind
, který detekuje vhodný server NIS v jejich doméně systému NIS.
Démon ypbind
prozkoumává servery za pomoci
vysílání do místní sítě IP; první, kdo odpoví, je považován za
potenciálně nejrychlejší server, a proto bude použit pro všechny
následující dotazy systému NIS. Po uplynutí určité doby nebo dojde-li k
přerušení spojení se serverem, začne démon ypbind
znovu prozkoumávat aktivní servery.
Toto přináší bezpečnostní riziko, protože démon ypbind
uvěří každému, kdo odpoví.
Proto nepoužívá balík NYS implicitně démona ypbind
, ale název hostitele serveru přebírá z konfiguračního souboru.