Linux NIS(YP)/NYS/NIS+ HOGYAN

Thorsten Kukuk

v1.3, 2003. július 1.


Tartalomjegyzék
1. Bevezetés
1.1. A dokumentum új verziói
1.2. A felelősség teljes elhárítása
1.3. Visszajelzés és javítások
1.4. Köszönetnyilvánítás
1.5. Magyar fordítás
2. Összefoglalás és általános információ
2.1. Kifejezések összefoglalása
2.2. Néhány általános információ
3. NIS, NYS vagy NIS+?
3.1. libc 4/5 hagyományos NIS-el, vagy NYS ?
3.2. glibc 2 és NIS/NIS+
3.3. NIS vagy NIS+ ?
4. Hogyan működik?
4.1. Hogyan működik a NIS?
4.2. Hogyan működik a NIS+?
5. Az RPC Portmapper (Távoli Eljáráshívás kapuhozzárendelő)
6. Mire van szükség a NIS üzembe helyezéséhez?
6.1. Határozd meg, hogy géped szerver, szolga vagy kliens lesz.
6.2. A szoftver
7. A NIS kliens telepítése
7.1. Az ypbind démon
7.2. A NIS kliens beállítása hagyományos NIS használatával
7.3. NIS kliens beállítása NYS használatával
7.4. NIS kliens beállítása glibc 2.x segítségével
7.5. Az nsswitch.conf fájl
7.6. Árnyék jelszavak NIS-sel
8. Mire van szükség a NIS+ beállításához?
8.1. Szoftver
8.2. NIS+ kliens beállítása
8.3. NIS+, keylogin, bejelentkezés és PAM
8.4. Az nsswitch.conf fájl
9. NIS szerver beállítása
9.1. Az ypserv szerver-program
9.2. Az yps szerver program
9.3. Az rpc.ypxfrd program
9.4. Az rpc.yppasswdd program
10. A NIS/NYS telepítésének ellenőrzése
11. NIS térképek készítése és karbantartása
11.1. Új NIS térkép létrehozása
11.2. NIS térképek frissítése
11.3. A térképfájl bejegyzéseinek hossza
12. Túlélőcsomag újraindítás esetére
12.1. A NIS indító (init) szkript
12.2. NIS domainnév
12.3. Linux-disztribúció specifikus megjegyzések
13. Jelszóváltás az rpasswd program segítségével
13.1. A szerver beállítása
13.2. A kliens beállítása
14. Általános, valamint NIS problémák elhárítása
15. Gyakran Ismételt Kérdések

1. Bevezetés

Egyre több linuxos gépet telepítenek hálózat részeként. A hálózati adminisztráció egyszerűsítéséhez, a legtöbb hálózatban (leginkább a Sun alapú hálózatokban) Hálózati Információs Szolgáltatást (Network Information Service, továbbiakban NIS) futtatnak. A Linux rendszerek teljes mértékben fel tudják használni a már meglévő NIS szolgáltatásokat, és ők maguk is képesek NIS szolgáltatásokat nyújtani. Mindemellett képesek teljes értékű NIS+ kliensként viselkedni, ez a támogatás egyelőre béta állapotban van.

Ez a dokumentáció megpróbál választ adni a NIS(YP) és NIS+ beállításával kapcsolatos kérdésekre, amik a Linux rendszereden felmerülhetnek. Ne felejtsd el elolvasni "Az RPC Portmapper (Távoli Eljáráshívás kapuhozzárendelő)" fejezetet!

A NIS-HOGYANt szerkeszti, és karbantartja:

        Thorsten Kukuk, <[email protected]>

Az első NIS-HOGYAN forrása az alábbi emberektől származik, akiknek eme dokumentáció első verzióit köszönhetjük:

Andrea Dell'Amico       <[email protected]>
Mitchum DSouza          <[email protected]>
Erwin Embsen            <[email protected]>
Peter Eriksson          <[email protected]>


1.1. A dokumentum új verziói

Mindig megtalálhatod a legfrissebb változatot, megnézheted a World Wide Web használatával a http://www.linux-nis.org/nis-howto/HOWTO/NIS-HOWTO.html honlapot.

A dokumentáció új verziói több linuxos WWW és FTP helyre felkerülnek, beleértve az LDP honlapot is.

A dokumentáció fordításaira mutató hivatkozásokat a http://www.linux-nis.org/nis-howto/ honlapon találod.


1.3. Visszajelzés és javítások

Ha kérdésed, vagy megjegyzésed van ezzel a dokumentummal kapcsolatban, kérlek ne habozz levelet küldeni Thorsten Kukuknak a [email protected] e-mail címre. Örömmel fogadok bármilyen ötletet vagy kritikát. Ha hibát találnál e dokumentációban, kérlek értesíts, hogy ki tudjam javítani a következő változatban. Köszönöm.

Kérlek ne küldj nekem levelet a Linux disztribúciód belső problémáiról! Nem ismerem mindegyik Linux disztribúciót, de megpróbálom hozzáadni az összes megoldást, amit küldesz.


1.5. Magyar fordítás

A magyar fordítást Bábos Balázs készítette (?). A dokumentumot Völgyi Péter frissítette (2003.02.28). A lektorálást Szilágyi Szilárd végezte el (2003.09.04). Utoljára Daczi László frissítette (2003.10.14). A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.


2. Összefoglalás és általános információ

2.1. Kifejezések összefoglalása

Ebben a dokumentumban nagyon sok szakkifejezés található. Íme a legfontosabb szakkifejezések rövid magyarázata:

DBM

DataBase Management (adatbázis-menedzselés), egy könyvtárnyi függvény, amely kulcs-tartalom párokat kezelnek egy adatbázisban.

DLL

Dynamically Linked Library (dinamikusan láncolt programkönyvtár), futtatható programhoz futásidőben hozzákapcsolódó programkönyvtár.

domainname

A domain name (domain név) egy "kulcs", amit a NIS kliens arra használ, hogy megfelelő NIS szervert találjon, ami ezt a domain név kulcsot szolgáltatja. Itt jegyezném meg, hogy ennek általában semmi köze sincs a gép(ek) DNS "domain nevéhez" (gép név).

FTP

File Transfer Protocol (fájl átviteli protokoll), fájlok két számítógép közötti átvitelére szolgáló protokoll.

libnsl

Name services library (név szolgáltató könyvtár), SVR4 Unixok névszolgáltatás-hívásainak (getpwnam, getservbyname, stb...) könyvtára. A GNU libc használja ezt a NIS(YP) és NIS+ függvényekhez.

libsocket

Socket services library (foglalat szolgáltatás könyvtár), SVR4 Unixok socket szolgáltatás-hívásainak (socket, bind, listen, stb.) programkönyvtára.

NIS

Network Information Service (hálózati információs szolgáltatás), a hálózat gépei számára olyan információt kínáló szolgáltatás, amit a teljes hálózatnak ismernie kell. A Linux általános libc könyvtára támogatást nyújt a NIS használatához, amire a következőkben "hagyományos NIS" néven fogunk hivatkozni.

NIS+

Network Information Service (Plus :-) (hálózati információs szolgáltatás plusz), alapvetően NIS szteroidokkal. A NIS+ szolgáltatást a Sun Microsystems Inc. tervezte a NIS-t lecserélendő, hogy nagy telepítések esetén biztonságosabb, és jobban kezelhető legyen.

NYS

Ez egy projekt neve, a NIS+-t, YP-t és a Switch (kapcsoló) rövidítése, Peter Eriksson >[email protected]< vezeti. Többek között a NYS könyvtár Name Services Switch (név szolgáltatás kapcsoló) funkcionalitását használó NIS (= YP) kód teljes újraírását foglalja magába.

NSS

Name Service Switch (név szolgáltatás kapcsoló), Az /etc/nsswitch.conf fájl határozza meg a különböző kért információ-darabok fellapozásának sorrendjét.

RPC

Remote Procedure Call (távoli eljáráshívás). Az RPC rutinok lehetővé teszik C programok számára, hogy hálózaton keresztül más gépeken eljárásokat hívjanak meg. Amikor RPC-ről beszélünk, legtöbbször a Sun RPC változatára gondolunk.

YP

Yellow Pages(tm) (sárga oldalak(tm)), A United Kingdom of British Telecom plc bejegyzett védjegye.

TCP-IP

Transmission Control Protocol/Internet Protocol (átvitelirányító protokoll/internet protokoll), Unix gépeken leggyakrabban ezt az adatkommunikációs protokollt használják.


3. NIS, NYS vagy NIS+?


4. Hogyan működik?

4.1. Hogyan működik a NIS?

Egy hálózaton belül legalább egy, NIS szerverként működő gépnek kell lennie. Lehet több NIS szerver is úgy, hogy mindegyik más NIS "körzetet" szolgál ki - vagy lehetnek együttműködő NIS szervereid is, ahol van egy mester NIS szerver, és a többi úgynevezett szolga NIS szerver (egy adott NIS "körzetedre" ez így is van) - vagy lehet vegyesen is...

A szolga szervereknek a NIS adatbázisról csak egy másolatuk van, és ezeket a másolatokat a mester NIS szervertől kapják, amikor abban változás történt. A hálózatod gépeinek számától és a hálózatod megbízhatóságától függően választhatsz, hogy egy vagy több szolga szervert telepítesz. Amikor egy NIS szerver lekapcsolódik, vagy túl lassan válaszol a kérésekre, a NIS kliens, ami ehhez a szerverhez kapcsolódik, megpróbál egy működő vagy gyorsabb szervert találni.

A NIS adatbázisok úgynevezett DBM formátumban tárolódnak, amik ASCII adatbázisból konvertálhatók. Például az /etc/passwd és az /etc/group fájlok közvetlenül átalakíthatók DBM formátumba ASCII-ből-DBM-be átalakító szoftverrel ("makedbm", amit a szerver szoftveréhez csatolnak). A mester NIS szerveren egyaránt kell ASCII és DBM adatbázisnak lennie.

A szolga szerverek minden a NIS térképben történt változásról értesülnek (az "yppush" program segítségével), és automatikusan megkapják az adatbázisok szinkronizálásához szükséges változásokat. A NIS klienseknek nem kell ezt megtenniük, hiszen ők folyamatosan a NIS szerverrel kommunikálnak, hogy a szerverek DBM adatbázisából megszerezzék a szükséges információkat.

A régi ypbind változatok üzenetszórással keresnek futó NIS szervert. Ez nem biztonságos, mert bárki telepíthet NIS szervert, és válaszolhat az üzenetszórással érkező üzenetekre. Az ypbind újabb változatai (ypbind-3.3 vagy ypbind-mt) képesek a szervert konfigurációs fájlból olvasni - tehát nincs szükség üzenetszórásra.


5. Az RPC Portmapper (Távoli Eljáráshívás kapuhozzárendelő)

A lentebb említésre kerülő programok futtatásához el kell indítanod az /sbin/portmap programot. Néhány Linux disztribúció már tartalmazza a kódot e démon futtatásához az /sbin/init.d/ vagy /etc/rc.d/ könyvtárakban. Csak annyit kell tenned, hogy aktiválod és újraindítod a Linux gépedet. Olvasd el a Linux disztribúciód dokumentációjában ennek menetét.

Az RPC portmapper (portmap(8) egy RPC program számokat TCP/IP (vagy UDP/IP) protokoll port számokká alakító szerver. Ennek futnia kell ahhoz, hogy RPC hívásokat (mint amilyeneket a NIS/NIS+ kliens szoftver is nyújt) adhass RPC szervereknek (mint amilyen a NIS vagy NIS+ szerver) azon a gépen. Amikor egy RPC szerver elindul, megmondja a portmap-nek hogy melyik porton hallgat, és milyen RPC program számok kiszolgálására van felkészítve. Amikor egy kliens RPC hívást szeretne tenni egy adott programszámra, először kapcsolatot teremt a szerver portmap-jével, hogy megállapítsa, melyik portcímre küldje az RPC csomagokat.

Szabványosan, az általános RPC szervert az inetd(8) indítja, így a portmap-nek már az inetd indulása előtt el kell indulnia.

A biztonságos RPC-hez a portmapper-nek szüksége van az idő szolgáltatásra (Time service). Győződj meg arról, hogy engedélyezted az idő szolgáltatást az /etc/inetd.conf-ban minden gépre:
#
# Az idő szolgáltatás óra egyeztetésre használatos.
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal

FONTOS: Ne feledkezz el a konfigurációs fájlok változtatása után az inetd újraindításáról!


6. Mire van szükség a NIS üzembe helyezéséhez?


6.2. A szoftver

A NIS kliens és szerver szoftver sikeres lefordításához minden szükséges rendszerhívás megtalálható az "/usr/lib/libc.a" (v.4.4.2 és újabb) rendszerkönyvtárban, vagy a "/lib/libc.so.x" oszott könyvtárban. A GNU C könyvtár 2-höz (glibc 2.x), a /lib/libnsl.so.1 is szükséges.

Néhányan jelezték, hogy a NIS csak 4.5.21 és újabb "/usr/lib/libc.a" változatokkal működik, tehát ha biztonságosan szeretnéd használni, ne használj régebbi libc-ket. A NIS kliens szoftver beszerezhető az alábbi helyekről:

  Hely                  Könyvtár                         Fájl neve

  ftp.kernel.org        /pub/linux/utils/net/NIS         yp-tools-2.8.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-mt-1.13.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3-glibc5.diff.gz

Amint megszerezted a szoftvert, kérlek, kövesd a szoftverrel kapott utasításokat. Az yp-clients-2.2 libc4-el és libc5-el használható 5.4.20-ig. A libc5.4.21-hez és glibc 2.x-hez yp-tools-1.4.1-re vagy újabbra lesz szükséged. Az új yp-tools-2.4-nek minden Linux libc-vel működnie kell. Mivel volt egy hiba a NIS kódban, ne használj libc-5.4.21-5.4.35 közötti változatot. Használj inkább 5.4.36-os vagy frissebb libc könyvtárat helyette, vagy a a legtöbb YP program nem fog működni. Az ypbind 3.3 is működni fog minden könyvtárral. Ha gcc-2.8.x-et vagy újabbat használsz, egcs-t vagy glibc-2.x-t, hozzá kell adnod az ypbind-3.3-glibc5.diff foltot (patch) az ypbind-3.3-hoz. Ha lehetséges ne használd az ypbind 3.3-as verzióját, biztonsági hiányosságokból kifolyólag. Az ypbind-mt egy új, többszálú démon. 2.2-es Linux kernel kell hozzá, és 2.1-es vagy újabb glibc.


7. A NIS kliens telepítése

7.1. Az ypbind démon

Miután sikeresen lefordítottad a szoftvert, készen állsz a telepítésére. Az ypbind démon számára megfelelő hely az /usr/sbin könyvtár. Néhányan mondhatnák, hogy nincs szükséged ypbind-re NYS-t tartalmazó rendszerben. Tévednek. ypwhich-re és ypcat-ra mindig szükség van.

Ezt természetesen root felhasználóként kell elvégezned. A többi binárist (ypwhich, ypcat, yppasswd, yppoll, ypmatch) olyan könyvtárba kell tenni, ami minden felhasználó számára elérhető, általában az /usr/bin könyvtárba.

Újabb ypbind változatok /etc/yp.conf nevű konfigurációs fájlal rendelkeznek. Bedrótozhatsz ide egy NIS szervert - további információkért nézd meg az ypbind(8) kézikönyv oldalt. Erre az fájlra NYS esetén is szükséged van. Például:
  ypserver 10.10.0.1
  ypserver 10.0.100.8
  ypserver 10.3.1.1

Ha a rendszer fel tudja oldani a gépneveket NIS nélül, használhatsz gépnevet, különben IP címet kell használnod. Az ypbind-3.3-ban van egy hiba, és csak a legutolsó bejegyzést használja (a példában ypserver 10.3.1.1). Minden más bejegyzést figyelmen kívül hagy. Az ypbind-mt helyesen kezeli ezt, és azt használja, amelyik először válaszol.

Jó ötlet kipróbálni az ypbind-et, mielőtt beleteszed az indítófájlokba. Az ypbind kipróbálásához a következőket kell tenned:

Ettől a ponttól kezdve használhatod az olyan NIS kliens programokat, mint például az ypcat, stb... Például az ypcat passwd.byname visszaadja neked a teljes NIS jelszó-adatbázist.

FONTOS: Ha kihagytad a tesztelő eljárást, győződj meg róla, hogy beállítottad a körzet nevét, és létrehoztad a következő könyvtárat:

    /var/yp

Ennek a könyvtárnak léteznie KELL az ypbind sikeres elindulásához.

A körzetnév helyességének ellenőrzésére használd a /bin/ypdomainname programot az yp-tools-2.2-ből. Ez az yp_get_default_domain() függvényt használja, ami sokkal szigorúbb. Nem engedélyezi például a "(semmi)" körzetnevet, ami az alapértelmezett Linux alatt, és sok probléma okozója.

Ha a teszt működik, most érdemes megváltoztatnod a démonokat indító fájlokat, hogy az ypbind a rendszer indulásakor indulhasson, és a rendszered NIS kliensként viselkedjen. Győződj meg róla, hogy a körzetnév az ypbind indítása előtt beállításra kerül!

Nos, ennyi. Indítsd újra a géped, és nézd meg a rendszerüzeneteket, hogy az ypbind elindult-e.


7.2. A NIS kliens beállítása hagyományos NIS használatával

Gépnév feloldáshoz be kell állítanod (vagy hozzá kell adnod) a "nis"-t a feloldási sorrend sorához az /etc/host.conf fájlban. Nézd meg a "resolv+.8" kézikönyv oldalt a részletes leírásért.

Add hozzá a NIS kliens az /etc/passwd fájlhoz a következő sort:

+::::::

Használhatod a + és a - karaktereket felhasználó hozzáadásához/kizárásához vagy megváltoztatásához. Ha a vendég felhasználót szeretnéd kizárni, csak add hozzá az /etc/passwd fájlhoz a "-guest" kapcsolót. Más parancsértelmezőt (például ksh) szeretnél használtatni a "linux" felhasználóval? Nem probléma, egyszerűen add hozzá a "+linux::::::/bin/ksh" (idézőjelek nélkül) sort az /etc/passwd fájlhoz. Azokat a mezőket, amelyeket nem akarsz használni, üresen kell hagyni. Használhatod a Netgroups-t a felhasználó szabályozáshoz.

Például ahhoz hogy csak miquels, dth és ed, valamint a sysadmin hálózati csopot számára engedélyezd a bejelentkezés-hozzáférést, és a többiek számára megmaradjon az azonosító, a következőket kell megadnod:

      +miquels:::::::
      +ed:::::::
      +dth:::::::
      +@sysadmins:::::::
      -ftp
      +:*::::::/etc/NoShell

Jegyezzük meg, hogy Linux rendszerben a jelszó mezőt is felül lehet bírálni ugyanúgy, ahogy ebben a példában tettük. Eltávolítottuk az "ftp" felhasználót is, tehát itt többé nem létezik, azaz az anonymous ftp nem fog többé működni.

A hálózati csoport így fog kinézni:
sysadmins (-,software,) (-,kukuk,)

FONTOS: A hálózati csoport (netgroup) beállítási lehetőség a 4.5.26-os libc változattól kezdve használható. Ha 4.5.26-os libc-nél korábbi változatod van, minden NIS jelszó-adatbázisban szereplő felhasználó hozzáférhet a Linux gépedhez, ha "ypbind"-et futtatsz!


7.5. Az nsswitch.conf fájl

A Hálózati Szolgáltatások (Network Services) beállítási fájl (/etc/nsswitch.conf) határozza meg egy meghatározott információcsoport lekérdezésekor a feloldások sorrendjét, hasonlóan ahogy az /etc/host.conf fájl meghatározza, hogy milyen módon történjen a gépnév feloldása. Például a

    hosts: files nis dns

sor meghatározza, hogy a gépnév feloldás függvény először a helyi /etc/hosts fájlt nézze, majd NIS feloldás kövesse, végül a körzetnév szolgáltatáson keresztül oldja fel (/etc/resolv.conf és named). Ennél a pontnál, ha nincs találat, hibával tér vissza. Ezt az fájlt minden felhasználó számára olvashatóvá kell tenni! További információt találsz erről az nsswitch.5, vagy az nsswitch.conf.5 kézikönyv oldalakban.

Egy NIS számára használható /etc/nsswitch.conf fájl:
#
# /etc/nsswitch.conf
#
# Egy példa Név Szolgáltatás Kapcsoló (Name Service Switch) beállítási
# fájl. Ezt az fájlt úgy kell rendezni, hogy a leginkább használt
# szolgáltatás kerüljön az elejére.
#
# A '[NOTFOUND=return]' bejegyzés azt jelenti, hogy egy bejegyzés
# keresése be kell, hogy fejeződjön, ha az előző bejegyzés keresése
# nem adott vissza semmit. Jegyezzük meg, hogy ha a keresés más
# okból hibás (mondjuk nem válaszol NIS szerver), akkor a keresés
# folytatódik a következő bejegyzéssel.
#
# Lehetséges bejegyzések:
#
#	nisplus			Használj NIS+ -t (NIS 3-as verzió)
#	nis			Használj NIS-t   (NIS 2-es verzió), YP-nek is |hívják
#	dns			Használj DNS-t   (Domain Name Service: Körzet |Név Szolgáltatás)
#	files			Használd a helyi fájlokat
#	db			Használd a /var/db adatbázist
#	[NOTFOUND=return]	Hagyd abba a keresést, ha nem találod
#

passwd:     compat
group:      compat
# libc5 esetén shadow: files nis -t kell használod
shadow:     compat

passwd_compat: nis
group_compat: nis
shadow_compat: nis

hosts:      nis files dns

services:   nis [NOTFOUND=return] files
networks:   nis [NOTFOUND=return] files
protocols:  nis [NOTFOUND=return] files
rpc:        nis [NOTFOUND=return] files
ethers:     nis [NOTFOUND=return] files
netmasks:   nis [NOTFOUND=return] files
netgroup:   nis
bootparams: nis [NOTFOUND=return] files
publickey:  nis [NOTFOUND=return] files
automount:  files
aliases:    nis [NOTFOUND=return] files

A passwd_compat, group_compat és shadow_compat csak glibc 2.x alatt támogatott. Ha nincs shadow szabály az /etc/nsswitch.conf fájlban, a glibc a passwd szabályt fogja alkalmazni a feloldáshoz. Van még néhány feloldó modul a glibc-hez, mint például a hesoid. További információért olvasd el a glibc dokumentációját.


7.6. Árnyék jelszavak NIS-sel

A NIS feletti árnyék jelszavak használata mindig rossz ötlet. Elveszted az árnyék által biztosított biztonságot, és csak néhány Linux C könyvtár támogatja. Egy jó módszer a NIS feletti árnyék jelszavak használatának elkerülésére az, hogy csak a helyi felhasználók esetén használsz árnyékjelszót az /etc/shadow fájlban. Vedd ki a NIS felhasználó bejegyzéseket az árnyék adatbázisból, és tedd vissza a jelszót a passwd fájlba. Így tehát használhatod az árnyék jelszót a root bejelentkezéshez, és a hagyományos passwd-t a NIS felhasználóhoz. Ennek a módszernek megvan az az előnye, hogy minden NIS kliens esetén működni fog.


8. Mire van szükség a NIS+ beállításához?


8.2. NIS+ kliens beállítása

FONTOS: NIS+ kliens beállításához olvasd el a Solaris NIS+ dokumentációkat, abban van leírva mit kell tenni a szerver oldalán! Ez a dokumentáció csak a kliens oldali teendőket írja le!

Miután feltelepítetted az új libc-t és NIS-eszközöket, elkészítheted az új kliens megbízólevelét (credential) a NIS+ szerveren. Győződj meg róla, hogy a portmap fut. Ezután ellenőrizd, hogy a Linux géped ideje megegyezik a NIS+ szerverével. Biztonságos RPC használatakor legfeljebb 3 perces ablak áll rendelkezésre, amíg a megbízások érvényesek. Jó ötlet minden gépen az xntpd futtatása. Mindezek után futtasd a következőket:

domainname nisplus.domain.
nisinit -c -H <NIS+ server>

az indítófájlok beállításához. Olvasd el az nisinit kézikönyv oldalt a többi lehetőségért. Győződj meg róla, hogy a körzetnév minden újraindítás után beállítódik-e. Ha nem tudod, hogy mi a hálózatod NIS+ körzetneve, kérdezd meg a redszergazdát/hálózati adminisztrátort.

Most célszerű megváltoztatnod az /etc/nsswitch.conf fájlt. Bizonyosodj meg arról, hogy a publickey szolgáltatás utáni egyetlen szolgáltatás a nisplus ("publickey: nisplus"), és semmi más!

Ezután indítsd el a keyserv-et, és nézd meg, hogy minden induláskor ez az első elinduló démon a portmap után. Futtasd a
keylogin -r
parancsot a rendszered root titkos kulcsának eltárolásához. (Remélem hozzáadtad az új gép nyilvános kulcsát a NIS+ szerveren?).

A niscat passwd.org_dir parancsnak ekkor már meg kell mutatnia a passwd adatbázisod összes bejegyzését.


8.4. Az nsswitch.conf fájl

A Hálózati Szolgáltatások (Network Services) beállítási fájl (/etc/nsswitch.conf) megadja, hogy milyen sorrendben történjenek a kérés-feloldások, ha egy bizonyos információkérés történt, hasonlóan ahogy az /etc/host.conf fájl meghatározza a gépnév feloldásának menetét. Például a

    hosts: files nisplus dns

sor meghatározza, hogy a gépnév feloldó függvény először a helyi /etc/hosts fájlt nézze, amit egy NIS+ feloldás kövessen, végül a körzetnév szolgáltatást kérdezze (/etc/resolv.conf és named), ami után ha nincs találat, akkor hibával tér vissza.

Egy használható NIS+ /etc/nsswitch.conf fájl:
#
# /etc/nsswitch.conf
#
# Egy példa Név Szolgáltatás Kapcsoló (Name Service Switch) beállítási fájl.
# Ezt a fájlt úgy kell rendezni, hogy a legtöbbször használt szolgáltatás
# kerüljön az elejére.
#
# A '[NOTFOUND=return]' bejegyzés azt jelenti, hogy egy bejegyzés
# keresése fejeződjön be, ha az előző bejegyzés keresése
# nem adott vissza semmit. Jegyezzük meg, hogy ha a keresés más
# okból hibás (mondjuk nem válaszol NIS szerver), akkor a keresés
# folytatódik a következő bejegyzéssel.
#
# Lehetséges bejegyzések:
#
#	nisplus			Használj NIS+ -t (NIS 3-as verzió)
#	nis			Használj NIS-t   (NIS 2-es verzió), YP-nek is hívják
#	dns			Használj DNS-t   (Domain Name Service: Körzet Név Szolgáltatás)
#	files			Használd a helyi fájlokat
#	db			Használd a /var/db adatbázist
#	[NOTFOUND=return]	Hagyd abba a keresést, ha nem találod
#

passwd:     compat
group:      compat
shadow:     compat

passwd_compat: nisplus
group_compat:  nisplus
shadow_compat: nisplus

hosts:      nisplus files dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus
automount:  files
aliases:    nisplus [NOTFOUND=return] files


9. NIS szerver beállítása

9.1. Az ypserv szerver-program

Ez a dokumentáció csak az "ypserv" NIS szerver beállítását tartalmazza.

A NIS szerver szoftvert megtalálod a

  Hely                Könyvtár                     Fájl neve

  ftp.kernel.org      /pub/linux/utils/net/NIS     ypserv-2.9.tar.gz
  ftp.kernel.org      /pub/linux/utils/net/NIS     ypserv-2.9.tar.bz2

helyen.

Bővebb információkat találsz még a http://www.linux-nis.org/nis/ webhelyen.

A hagyományos NIS és a NYS szerver beállítása megegyezik.

Az ypserv és makedbm programok elkészítéséhez fordítsd le a szoftvert. Beállíthatod az ypserv-et securenets fájlok vagy tcp_wrapper-ek használatára.

Ha a szerveredet mesterként futtatod, határozd meg, hogy melyik fájlokat kell NIS-en keresztül elérhetővé tenned, és add hozzá vagy vedd ki a megfelelő bejegyzéseket az "all" szabálynál a /var/yp/Makefile fájlban. Mindig célszerű megnézned, és megfelelően szerkeszteni az Opciókat (Options) a Makefile elején.

Nagy váltás volt az ypserv 1.1 és az 1.2 között. Az 1.2-es verzió óta az fájlkezelők cache-ben tárolódnak. Ez azt jelenti, hogy ha új map-eket készítesz, mindig a -c kapcsolóval kell meghívnod a makedbm-et. Győződj meg róla, hogy az ypserv 1.2-ből, vagy újabbból származó /var/yp/Makefile-t használod, vagy add hozzá a -c kapcsolót a makedbm- hez a Makefile-ban. Ha ezt nem teszed meg, az ypserv nem fogja tovább használni a régi map-eket, és a frissítetteket sem.

Most átszerkesztheted a /var/yp/securenets és a /etc/ypserv.conf fájlokat. Bővebb információkért olvasd el az ypserv(8) és az ypserv.conf(5) kézikönyv oldalakat.

Bizonyosodj meg róla, hogy a portmapper (portmap(8)) fut, és indítsd el az ypserv szervert. A

    % rpcinfo -u localhost ypserv

utasítás kimenete hasonló lesz ehhez:

    program 100004 version 1 ready and waiting
    program 100004 version 2 ready and waiting

A "version 1" sor lehet, hogy hiányzik, az ypserv verziójától függően, és attól függően, hogy milyen konfigurációs fájlt használsz. Csak akkor lényeges, ha régi SunOS 4.x-es klienseket használsz.

Most készítsük el a NIS (YP) adatbázist. A mesteren futtasd a

    % /usr/lib/yp/ypinit -m

parancsot. A szolgán nézd meg, hogy működik-e az ypwhich -m. Mielőtt a
    % /usr/lib/yp/ypinit -s masterhost
parancs kiadásával beüzemelnéd a gépet NIS szolgának, NIS kliensként kell beállítani

Nos, a szervered kész van és működik.

Ha nagyobb problémáid vannak, elindíthatod az ypserv és ypbind programokat nyomkövető üzemmódban is, különböző xterm-ekben. A nyomkövetés kimenetének mutatnia kell, hogy mi működik rosszul.

Ha map-et kell frissítened, futtasd a NIS mester szerveren a make-et a /var/yp könyvtárban. Ez frissíteni fogja a map-et, ha a forrásfájl frissebb, majd át is adja a szolga szervereknek is. Kérlek ne használd a map frissítéshez az /var/yp-et.

Esetleg átszerkesztheted a root crontabját *a szolga* szerveren és hozzáadni a következő sorokat:

      20 *    * * *    /usr/lib/yp/ypxfr_1perhour
      40 6    * * *    /usr/lib/yp/ypxfr_1perday
      55 6,18 * * *    /usr/lib/yp/ypxfr_2perday
Ez biztosítani fogja, hogy a legtöbb NIS map frissüljön, még ha ki is maradt egy frissítés, ha a mester szerver frissítésekor a szolga le volt kapcsolva.

A későbbiekben bármikor hozzáadhatsz új szolgát. Először biztosítsd, hogy az új szolga szervernek legyen jogosultsága a NIS mester szerverhez kapcsolódni, majd futtasd a
    % /usr/lib/yp/ypinit -s masterhost
programot az új szolgán. A mester szerveren add hozzá a /var/yp/ypservers-hez az új szolga szerver nevét és futtasd a make-et a /var/yp könyvtárban a map frissítéséhez.

Ha korlátozni szeretnéd a felhasználók hozzáférését a NIS szerveredhez, a NIS szerveredet kliensként is üzemeltetned kell úgy, hogy elindítod az ypbind-et, és hozzáadod az /etc/passwd jelszó fájlhoz _félúton_ a plusz bejegyzéseket. A könyvtár függvények figyelmen kívül hagyják a hagyományos bejegyzéseket az első NIS bejegyzés után és a többit NIS-en keresztül szerzik meg. Így a NIS hozzáférés-szabályok karbantartottak. Például:

     root:x:0:0:root:/root:/bin/bash
     daemon:*:1:1:daemon:/usr/sbin:
     bin:*:2:2:bin:/bin:
     sys:*:3:3:sys:/dev:
     sync:*:4:100:sync:/bin:/bin/sync
     games:*:5:100:games:/usr/games:
     man:*:6:100:man:/var/catman:
     lp:*:7:7:lp:/var/spool/lpd:
     mail:*:8:8:mail:/var/spool/mail:
     news:*:9:9:news:/var/spool/news:
     uucp:*:10:50:uucp:/var/spool/uucp:
     nobody:*:65534:65534:noone at all,,,,:/dev/null:
     +miquels::::::
     +:*:::::/etc/NoShell
     [ All normal users AFTER this line! ]
     tester:*:299:10:Just a test account:/tmp:
     miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh

Bár a "tester" felhasználó létezik, a parancsértelmezője azonban az /etc/NoShell. miquels-nek rendes hozzáférése lesz.

Alternatívaként átszerkesztheted a /var/yp/Makefile fájlt és beállíthatod, hogy a NIS másik jelszó forrás fájlt használjon. Nagy rendszereken a NIS jelszó és csoport fájlok általában az /etc/yp/ könyvtárban vannak. Ha a hagyományos eszközöket nem használhatók a passwd, chfn, adduser fájlokat adminisztrálására. Ehhez saját készítésű programokra lesz szükséged.

Habár az yppasswd, ypchsh és az ypchfn természetesen működni fog.


10. A NIS/NYS telepítésének ellenőrzése

Ha minden rendben (ahogy lennie kellene), néhány egyszerű utasítással ellenőrizheted a telepítést. Feltételezve, hogy például a jelszó fájlodat a NIS adja, a

    % ypcat passwd

utasításnak vissza kell adnia a NIS jelszófájlod tartalmát. A

    % ypmatch userid passwd

utasítás (ahol a userid egy találomra választott felhasználó azonosítója) vissza kell, hogy adja a felhasználó NIS jelszó fájlban lévő bejegyzését. Az "ypcat" és az "ypmatch" programokat a hagyományos NIS vagy NYS disztribúciód tartalmazza.

Ha egy felhasználó nem tud bejelentkezni, indítsd el a következő programot a kliensen:
#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>

int
main(int argc, char *argv[])
{
  struct passwd *pwd;

  if(argc != 2)
    {
      fprintf(stderr,"Használat: getwpnam felhasználónév\n");
      exit(1);
    }

  pwd=getpwnam(argv[1]);

  if(pwd != NULL)
    {
      printf("név......: [%s]\n",pwd->pw_name);
      printf("jelszó...: [%s]\n",pwd->pw_passwd);
      printf("felh. id.: [%d]\n", pwd->pw_uid);
      printf("csoport id: [%d]\n",pwd->pw_gid);
      printf("gecos....: [%s]\n",pwd->pw_gecos);
      printf("könyvtár.: [%s]\n",pwd->pw_dir);
      printf("shell....: [%s]\n",pwd->pw_shell);
    }
  else
    fprintf(stderr,"Az \"%s\" felhasználó nem található!\n",argv[1]);

  exit(0);
}

Ezt a programot futtatva a felhasználó nevével, mint paraméterrel, kiírja mindazt az információt, amit a getpwnam függvény ad vissza erre a felhasználóra. Ennek meg kell mutatnia, hogy melyik bejegyzés hibás. A leggyakoribb probléma az, hogy a jelszó mező "*"-al felül lett írva.

A GNU C 2.1-es könyvtár (glibc 2.1) tartalmaz egy getent eszközt. Ezt használhatod a fenti program helyett egy ilyen rendszeren. Kipróbálhatod:
   getent passwd
vagy
   getent passwd login


11. NIS térképek készítése és karbantartása


11.3. A térképfájl bejegyzéseinek hossza

A NIS protokoll 1024 karakterre korlátozza egy-egy bejegyzés hosszát. Nem lehet tehát csak úgy megváltoztatni ezt az értéket, és újrafordítani a rendszert. Minden NIS v2-t használó rendszer 1024 byte-nál rövidebb kulcs és adatértékeket vár; ha hirtelen megnöveled a kliens és szerver YPMAXRECORD változójának méretét, megszakad az átjárhatóság a NIS-t használó rendszereid között. Ahhoz, hogy ez így működjön, el kellene menned minden szoftvergyártóhoz, akik rendszerei támogatják a NIS-t és rá kellene venned őket, hogy változtassák már meg az 1024 byte-os méretet, méghozzá egyszerre, és egyformán... elég csekély a valószínűsége annak, hogy eredményes lesz az utad.

A glibc 2.1-től kezdve a glibc NIS alkalmazásain ez a korlát megszűnt. Vagyis lehetségessé vált, hogy Linux rendszereken használhassunk hosszabb bejegyzéseket is, de csak ha nincs más típusú kliens, vagy szerver a rendszerben.

Ahhoz, hogy hosszabb bejegyzéseket használhass a NIS térképeken, hozzá kell adnod a /var/yp/Makefile-ban levő makedbm bejegyzéshez a --no-limit-check opciót.

Az eredmény valami ilyesmi:

DBLOAD = $(YPBINDIR)/makedbm -c -m `$(YPBINDIR)/yphelper --hostname` --no-limit-check

FIGYELEM! Ez törést okoz a NIS protokollban, és bár a Linux támogatja, nem minden Linux alatt futó program tud a változásokkal együtt dolgozni.

Van egy másik útja is a probléma megoldásának. Ken Cameron ötletéből ered és a /etc/group fájl bejegyzéseit érinti:

1. A bejegyzést több sorban helyezzük el úgy, hogy minden csoport egymástól
   kissé eltérő nevekkel szerepeljen. 
2. A GID maradjon ugyanaz minden csoportnál

3. Legyen az első bejegyzés a jó csoportnév és GID
          (Én nem teszek felhasználónevet ide)

Amikor aztán a program felhasználó szerint haladva elolvassa a GID-et, majd
visszafelé haladva megáll az első egyező GID-nél és beolvassa a hozzá
tartozó felhasználónevet. Ronda, de működik!    

12. Túlélőcsomag újraindítás esetére

Ha egyszer beállítottad és működőképessé tetted a NIS rendszered, mind a kliens, mind pedig a szerver oldalról, meg kell győződnöd arról is, hogy ez az állapot fennmarad-e a rendszer újraindításakor is.

Két elkülönülő dolgot kell ellenőrizned: Az indító szkript meglétét, és a NIS domainnév helyes tárolását.


13. Jelszóváltás az rpasswd program segítségével

A NIS jelszó megváltoztatásának általános módja az yppasswd program meghívása, ez néhány rendszeren ez mindössze a passwd program alias neve. Ez a parancs az yppasswd protokollt használja, emellett szükséges az rpc.yppasswdd folyamatnak futnia a NIS master szerveren. A protokoll eléggé idejétmúlt, a régi jelszót sima szövegként küldi át a hálózaton. Ez nem problémás, amennyiben a jelszó sikeresen megváltozik. Abban az esetben a régi jelszót felváltja egy új. De ha a jelszóváltás sikertelen, úgy egy támadó használhatja a helyes jelszót, és beléphet a felhasználó nevében. Még rosszabb, ha a rendszeradminisztrátor változtatja meg egy másik felhasználó jelszavát, ekkor a NIS master szerver root jelszava továbbítódik sima szövegként a hálózaton. És az ebben az esetben nem fog megváltozni.

Egyfajta megoldás az, ha nem az yppasswd programot használod jelszóváltásra. Ehelyett jól használható az rpasswd parancs a pwdutils csomagból.

  Webhely         Könyvtár                           Fájl neve

  ftp.kernel.org  /pub/linux/utils/net/NIS           pwdutils-2.3.tar.gz
  ftp.suse.com    /pub/people/kukuk/pam/pam_pwcheck  pam_pwcheck-2.2.tar.bz2
  ftp.suse.com    /pub/people/kukuk/pam/pam_unix2    pam_unix2-1.16.tar.bz2

Az rpasswd biztonságos SSL kapcsolaton keresztül megváltoztatja egy felhasználó jelszavát egy távoli szerveren. Egy átlagos felhasználó csak a saját jelszavát változtathatja meg, ha az adminisztrátor jelszavát is tudja, akkor pedig bárkiét, ha meghívja az rpasswd programot az -a kapcsolóval.


14. Általános, valamint NIS problémák elhárítása

Íme néhány általános, felhasználók által jelzett probléma:

  1. A 4.5.19-eshez szállított programkönyvtárak hibásak. A NIS nem működik vele.

  2. Ha a 4.5.19-es könyvtárakat 4.5.24-re frissíted, akkor a su program megszakad. Meg kell szerezned a su programot az 1.2.0-s slackware-ből. Minő véletlen, hogy pont ugyaninnen szerezheted be a frissített programkönyvtárakat is.

  3. Amikor egy NIS szervert lekapcsolnak, majd újra bekapcsolnak, az ypbind a következő üzenettel indul:
        yp_match: clnt_call:
        RPC: Unable to receive; errno = Connection refused
    és a bejelentkezéseket megtagadja azoknak, akik a NIS adatbázisban regisztrálva vannak. Megpróbálkozhatsz root felhasználóként bejelentkezni, és legyilkolni az ypbind-et, majd újra elindítani. Egy 3.3-as, vagy újabb verziójú ypbind frissítés is segíthet.

  4. Miután a libc-t 5.4.20-asnál magasabb verziószámra frissítetted, az YP eszközök nem működnek tovább. 1.2-es, vagy frissebb yp-tools-ra lesz szükséged az 5.4.21-es, vagy frissebb libc-hez és a glibc 2.x-hez. Korábbi libc verziójú libc-hez 2.2-es yp-clients kell. Az yp- tools 2.x-nek minden programkönyvtárral működnie kell.

  5. A 5.4.21 - 5.4.35 számú libc-ben az yp_maplist hibás, 5.4.36-es, vagy frissebb változatra van szükséged, vagy néhány YP program, mint például az ypwhich segfault hibával leáll.

  6. A libc 5 hagyományos NIS-el nem támogatja a NIS feletti árnyék jelszavakat. libc5+NYS-re vagy glibc 2.x-re van szükséged.

  7. Az ypcat shadow nem mutatja a shadow map-et. Ez így helyes, az árnyék térkép neve shadow.byname, nem shadow.

  8. A Solaris nem mindig használ privilegizált kapukat, tehát ne használj password mangling-et ha Solaris kliensed is van.


15. Gyakran Ismételt Kérdések

Mostanra a legtöbb kérdésedre válasz kellett kapnod. Ha még mindig lenne megválaszolatlan kérdésed, küldj egy üzenetet a

    comp.os.linux.networking

hírcsoportba.