A Linux NIS(YP)/NYS/NIS+ HOGYAN <author>Thorsten Kukuk <date>v1.0, 9 March 1999 <abstract> <nidx>HOWTOs!NIS</nidx> <nidx>HOWTOs!YP</nidx> <nidx>HOWTOs!NYS</nidx> <nidx>HOWTOs!NIS+</nidx> Ez a dokumentáció elmagyarázza, hogyan kell a Linux rendszert NIS(YP) vagy NIS+ kliensként beállítani, és hogy kell NIS szerverként telepíteni. </abstract> <!-- Tartalomjegyzék --> <toc> <sect>Bevezetés <p> Egyre több Linux számítógépet telepítenek számítógép hálózat részeként. Ahhoz, hogy egyszerűsödjön a hálózati adminisztráció, 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 egyenlő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 a <ref id="portmapper" name="The RPC Portmapper"> fejezetet! A NIS-HOWTO-t szerkeszti, és karbantartja: <tscreen><verb> Thorsten Kukuk, <kukuk@suse.de> </verb></tscreen> A NIS-HOWTO fordítását, a NIS-HOGYAN-t Bábos Balázs (bbk@swi.hu) készítette. Az első NIS-HOGYAN forrása az alábbi emberektől származik, akiknek e dokumentáció első verzióit köszönhetjük: <tscreen><verb> Andrea Dell'Amico <adellam@ZIA.ms.it> Mitchum DSouza <Mitch.DSouza@NetComm.IE> Erwin Embsen <erwin@nioz.nl> Peter Eriksson <peter@ifm.liu.se> </verb></tscreen> <sect1>A dokumentáció új verziói <p> Mindig megtalálhatod a legfrissebb változatot, megnézheted a World Wide Web használatával a <url url="http://www.suse.de/~kukuk/linux/HOWTO/NIS-HOWTO.html" name="http://www.suse.de/~kukuk/linux/HOWTO/NIS-HOWTO.html"> címen. 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ások a <url url="http://www.suse.de/~kukuk/linux/nis-howto.html" name="http://www.suse.de/~kukuk/linux/nis-howto.html"> címen találod. <sect1>Felelősség <p> Habár ezt a dokumentációt a legjobb tudásom szerint állítottam össze, lehet, sőt, szinte biztos, hogy tartalmaz hibákat. Kérlek, olvass el minden OLVASSEL (README) állományt, ami ebben a dokumentációban leírtakhoz kapcsolódik, hogy még részletesebb, és pontosabb információkat szerezhess. Megpróbálom amennyire csak lehet hibátlanul tartani ezt a dokumentációt. <sect1>Visszacsatolás és javítások <p> Ha kérdésed, vagy megjegyzésed van ezzel a dokumentációval kapcsolatban, kérlek ne habozz levelet küldeni Thorsten Kukuk-nak a <htmlurl url="mailto:kukuk@suse.de" name="kukuk@suse.de"> 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 <em/ne/ küldj nekem levelet a te Linux disztribúciód belső problémájáról! Nem ismerem mindegyik Linux disztribúciót, de megpróbálom hozzáadni az összes megoldást, amit küldesz. <sect1>Köszönetnyilvánítás <p> Szeretnénk megköszönni mindenkinek, aki közreműködött (közvetlenül, vagy közvetve) e dokumentáció létrejöttében. ABC sorrendben: <tscreen><verb> Byron A Jeff <byron@cc.gatech.edu> Markus Rex <msrex@suse.de> Miquel van Smoorenburg <miquels@cistron.nl> </verb></tscreen> Theo de Raadt felelős az eredeti yp-kliensek kódjáért. Swen Thuemmler portolta az yp-kliensek kódját Linuxra, illetve az yp-rutinokat libc-be (szintén Theo munkájára alapozva). Thorsten Kukuk írta a NIS(YP) és NIS+ rutinokat GNU libc 2.x-re a semmiből. <sect>Összefoglalás és általános információ <sect1>Kifejezések összefoglalása <nidx>NIS!glossary</nidx> <nidx>YP!glossary</nidx> <nidx>NYS!glossary</nidx> <nidx>NIS+!glossary</nidx> <nidx>glossary!NIS/NYS/YP/NIS+</nidx> <p> Ebben a dokumentációban nagyon sok szakkifejezés található. Íme a legfontosabb szakkifejezés rövid magyarázata: <descrip> <tag/DBM/DataBase Management (Adatbázis Menedzselés), egy könyvtárnyi függvény, amelyek kulcs-tartalom párokat kezelnek egy adatbázisban. <tag/DLL/Dynamically Linked Library (Dinamikusan Láncolt Könyvtár), futtatható programhoz futásidőben hozzákapcsolódó könyvtár. <tag/domainname/Körzet név, egy név "kulcs", amit a NIS kliens arra használ, hogy megfelelő NIS szervert találjon, ami ezt a körzet név kulcsot szolgáltatja. Itt jegyezném meg, hogy ennek általában semmi köze sincs a gép(ek) DNS "körzet nevéhez" (gép név). <tag/FTP/File Transfer Protocol (Állomány Átviteli Protokoll), állományok két számítógép közötti átvitelére szolgáló protokoll. <tag/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 <tag/libsocket/Socket services library (Foglalat szolgáltatás könyvtár), SVR4 Unixok socket szolgáltatás-hívásainak (socket, bind, listen, stb...) könyvtára. <tag/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"-ként fogunk hivatkozni. <tag/NIS+/Network Information Service (Plus :-) (Hálózati Információs Szolgáltatás (Plusz :-), alapvetően NIS szteroidokkal. A NIS+-t a Sun Microsystems Inc. tervezte a NIS-t lecserélendő, hogy _nagy_ telepítések esetén biztonságosabb, és jobban kezelhető legyen. <tag/NYS/Ez a projekt neve, és a NIS+-t, YP-t és a Switch (kapcsoló) rövidítése, Peter Eriksson <peter@ifm.liu.se> 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-implementálását foglalja magába. <tag/NSS/Name Service Switch (Név Szolgáltatás Kapcsoló), A /etc/nsswitch.conf állomány határozza meg a különböző kért információ-darabok fellapozásának sorrendjét. <tag/RPC/Remote Procedure Call (Távoli Eljárás Hívás), 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. <tag/YP/Yellow Pages(tm) (Sárga Oldalak(tm)), Az Egyesült Királysági British Telecom plc. bejegyzett védjegye. <tag/TCP-IP/Transmission Control Protocol/Internet Protocol (Átvitelirányító Protokoll/Internet Protokoll), Unix gépeken leggyakrabban ezt az adat-kommunikációs protokollt használják. </descrip> <sect1>Néhány általános információ <nidx>NIS!general information</nidx> <nidx>YP!general information</nidx> <nidx>NYS!general information</nidx> <nidx>NIS+!general information</nidx> <p> A következő 4 sor idézet a Sun(tm) Rendszer- És Hálózati Adminisztráció kézikönyvéből: <tscreen><verb> "A NIS korábban Sun Yellow Pages (YP) néven volt ismert, de a Yellow Pages(tm) az Egyesült Királysági British Telecom plc. bejegyzett védjegye, és tilos a beleegyezésük nélkül felhasználni." </verb></tscreen> A NIS a Hálózati Információs Szolgáltatás rövidítése. A célja az, hogy a hálózat gépei számára olyan információt kínáljon, amit a teljes hálózatnak ismernie kell. A NIS által szolgáltatott információk: <itemize> <item>felhasználói nevek/jelszavak/home könyvtárak (/etc/passwd) <item>csoport információ (/etc/group) </itemize> Ha például a jelszavad bejegyzése szerepel a NIS jelszó adatbázisban, be tudsz jelentkezni a hálózat minden olyan gépére, amin fut a NIS kliens program. A Sun a Sun Microsystems Inc. bejegyzett védjegye, amit a SunSoft Inc. engedélyezett. <sect>NIS, NYS vagy NIS+ ? <sect1>libc 4/5 hagyományos NIS-el, vagy NYS ? <nidx>libc4/5, use with NIS/NYS</nidx> <nidx>NIS/NYS, use with libc4/5</nidx> <p> A választás a "hagyományos NIS" és a NYS könyvtár NIS kódja között olyan, mint a választás a lustaság és fejlettség, vagy a rugalmasság és a kaland imádata között. A "hagyományos NIS" kód az általános C könyvtárban található már jóideje és néha a korától és a kissé rugalmatlanságától szenved. A NYS könyvtár NIS kódjának használatához újra kell fordítanod a libc könyvtárat, és bele kell fordítani a NYS kódot (vagy legalábbis szerezned kell valalkitől, aki már elkészítette egy előfordított libc változatot). A másik különbdég, hogy a hagyományos NIS kód tartalmaz némi NIS Netgroups (NIS Hálózati csoportok) támogatást, szemben a NYS kóddal. Másfelől a NYS kód lehetővé teszi, hogy árnyék jelszavakat (Shadow Password) használj teljesen átlátszó módon. A "hagyományos NIS" kód nem engedélyezi NIS feletti árnyék jelszavak használatát. <sect1>glibc 2 és NIS/NIS+ <nidx>glibc2, use with NIS/NIS+</nidx> <nidx>NIS/NIS+, use with glibc2</nidx> <p> Ezt mind el is felejtheted, ha az új GNU C könyvtár 2.x-et (azaz libc6) használsz. Ebben valódi NSS (név kapcsolás szolgáltatás) támogatás van, ami nagyon rugalmassá teszi, valamint a következő NIS/NIS+ térképekre is tartalmaz támogatást: aliases, ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services és shadow. A GNU C könyvtárnak nincs problémája a NIS feletti árnyék jelszavakkal. <sect1>NIS vagy NIS+ ? <nidx>NIS vs. NIS+</nidx> <p> A NIS és NIS+ közötti választás nagyon könnyű - használj NIS-t, ha nincs szükséged a NIS+-ra, vagy ha komoly biztonsági szükségleteid vannak. NIS+-t _sokkal_ körülményesebb adminisztrálni (nagyon könnyű kezelni a kliens oldalról, de a szerver oldalán szörnyű). Másik probléma, hogy a NIS+ linux alatti támogatása még mindig fejlesztés alatt áll - a legfrisebb glic 2.1-re lesz szükséged. Van a glibc NIS+-nek egy nemtámogatott portolása a libc5 rendszerekre, mint alternatíva. <sect>Hogyan működik? <sect1>Hogyan működik a NIS? <nidx>NIS/YP, theory of operation</nidx> <p> 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örzetetre" 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ódi, megpróbál egy bekapcsolt, vagy gyorsabb szervert találni. A NIS adatbázisok úgynevezett DBM formátumban tárolódnak, amik a ASCII adatbázisból konvertálhatók. Például a <tt>/etc/passwd</tt> és a <tt>/etc/group</tt> állományok közvetlenük átalakíthatók DBM formátumba ASCII-ből-DBM-be átalakító szoftverrel ("makedbm", amit a szerver szoftveréhez csatolnak). A mester NIS szervernek egyaránt kell ASCII és DBM adatbázist tartalmaznia. A szolga szerverek minden NIS térkép beli 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 kommunkiká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 állományból olvasni - tehát nincs szükség üzenetszórásra. <sect1>Hogyan működik a NIS+? <nidx>NIS+!theory of operation</nidx> <p> A NIS+ a Sun hálózati információs szolgáltatásának új változata. A legnagyobb különbség a NIS és NIS+ között az, hogy a NIS+ támogatja az adattitkosítást és a biztonságos RPC hitelesítést. A NIS+ névmodellje fa struktúrán alapul. Minden levél a fában egy NIS+ objektumnak felel meg. Az objektumok hat típusa: könyvtár, bejegyzés, csoport, hivatkozás, tábla és privát. A NIS+ névterület gyökerét alkotó NIS+ könyvtárat gyökér könyvtárnak hívják. Két különleges NIS+ könyvtár létezik: org_dir és groups_dir. Az org_dir (org=organization: szervezet, dir=directory: könyvtár) könyvtár tartalmazza az összes adminisztrációs táblát, olyanokat mint a passwd (passwd=password: jelszó), hosts (hosts: gépnevek) és a mail_aliases (mail aliases: levél álnevek). A groups_dir (groups: csoportok) könyvtár tartalmazza a hozzáférés vezérlésére szolgáló NIS+ csoport objektumokat. Az org_dir, groups_dir és a szülő könyvtárak együttesét NIS+ körzetnek nevezzük (NIS+ domain). <sect>Az RPC Portmapper (Távoli Eljáráshívás kapuhozzárendelő)<label id=portmapper> <nidx>RPC portmapper</nidx> <nidx>portmapper, RPC</nidx> <nidx>NIS!use of RPC portmapper</nidx> <p> A lentebb említésre kerülő programok futtatásához el kell indítanod a /usr/sbin/portmap programot. Néhány Linux disztribúció már tartalmazza a kódot e démon futtatásához a /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át hogy ezt hogyan teheted meg. 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 ad) 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 a /etc/inetd.conf-ban minden gépre: <tscreen><verb> # # Az Idő szolgáltatás óra egyeztetésre használatos # time stream tcp nowait root internal time dgram udp wait root internal </verb></tscreen> FONTOS: Ne feletkezz el a konfigurációs állományok változtatása után az inetd újraindításáról! <sect>Mire van szükség a NIS üzembe helyezéséhez? <nidx>NIS!setting up</nidx> <sect1>Határozzuk meg, hogy Szerver, Szolga vagy Kliens vagy <nidx>NIS!determining system type</nidx> <p> Ahhoz, hogy válaszolni tudj e kérdésre, két esetet kell megvizsgálni: <enum> <item>A géped egy már NIS szervereket tartalmazó hálózat része lesz <item>Még nincs NIS szervered a hálózatban </enum> Az első esetben csak a kliens programokra van szükséged (ypbind, ypwhich, ypcat, yppoll, ypmatch). A legfontosabb program az ypbind. Ennek a programnak állandóan futnia kell, ami azt jelenti, hogy mindig szerepelnie kell a folyamatok listájában (list of processes). Ez egy démon folyamat, és a rendszer indító állományaiból kell indítani (pl. /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local). Amint fut az ypbind, a géped máris NIS klienssé válik. A második esetben, ha még nincs NIS szervered, akkor a NIS szerver programokra is szükséged lesz (általában ypserv-nek hívják). A <ref id="ypserv" name="Setting up a NIS Server"> fejezet mutatja be, hogy hogyan kell a Linux gépedre NIS szervert telepíteni Peter Eriksson és Thorsten Kukuk "ypserv" változatával. Jegyezzük meg, hogy ez a megvalósítás a 0.14-es változattól kezdve támogatja a mester-szolga koncepciót, amiről a 4.1-es fejezetben esik szó. Elérhető egy másik szabad NIS szerver, amit "yps"-nek hívnak, Tobias Reber írta Németországban, támogatja a mester-szolga koncepciót, de van néhány más korlátozása, és jóideje nincs rá támogatás. <sect1>A Szoftver <nidx>NIS!library requirements</nidx> <p> A NIS kliens és szerver szoftver sikeres lefordításához minden szükséges rendszerhívás megtalálható a "/usr/lib/libc.a" (version 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éged lesz. 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: <tscreen><verb> Hely Könyvtár Állomány neve ftp.kernel.org /pub/linux/utils/net/NIS yp-tools-2.2.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS ypbind-mt-1.4.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 ftp.uni-paderborn.de /linux/local/yp yp-clients-2.2.tar.gz </verb></tscreen> 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.2-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 frisebb libc-t, 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 nagyobbat használsz, egcs-t vagy glibc-2.x-t, hozzá kell adnod az ypbind-3.3-glibc5.diff toldást az ypbind-3.3-hoz. Kérlek, soha ne használd az yp-clients-2.2 beli ypbind-et. Az ypbind-mt egy új, többszálú démon. 2.2-es Linux kernel kell hozzá, és 2.1-es vagy újabb glibc. <sect1>Az ypbind démon <nidx>NIS!ypbind daemon</nidx> <nidx>ypbind NIS daemon</nidx> <nidx>daemon!ypbind</nidx> <p> Miután sikeresen lefordítottad a szoftvert, készen állsz a telepítésére. Az ypbind démon számára megfelelő hely a /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-ként kell elvégezned. A többi bináris-t (ypwhich, ypcat, yppasswd, yppoll, ypmatch) olyan könyvtárba kell tenni, ami minden felhasználó számára elérhető, általában a /usr/bin könyvtárba. Újabb ypbind változatok /etc/yp.conf nevű konfigurációs állománnyal rendelkeznek. Bedrótozhatsz ide egy NIS szervert - további információkért nézd meg az ypbind(8) manuál oldalt. Erre az állományra a NYS esetén is szükséged van. Például: <tscreen><verb> ypserver voyager ypserver defiant ypserver ds9 </verb></tscreen> 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 legutoldó bejegyzést használja (ypserver ds9 a példában). 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ó állományokba. Az ypbind kipróbálásához a következőket kell tenned: <itemize> <item>Győződj meg róla, hogy van YP-körzet név beállításod. Ha ez nincs beállítva, akkor add ki a következő utasítást: <tscreen><verb> /bin/domainname nis.körzet </verb></tscreen> ahol <tt>nis.körzet</tt> olyan szöveg, aminek általában semmi köze a géped DNS-körzet nevéhez. Ez azért van így, hogy a külső betörők számára megnehezítse a NIS szerveredből a jelszó adatbázis megszerzését. Ha nem tudod, hogy mi a NIS körzet neve a hálózatodon, kérdezd meg a rendszergazdát/hálózati adminisztrátort. <item>Indítsd el a "/usr/sbin/portmap"-t, ha még nem fut. <item>Készíts egy "/var/yp" nevű könyvtárat, ha még nem létezik. <item>Indítsd el a "/usr/sbin/ypbind"-t. <item>Ellenőrizd a "rpcinfo -p localhost" utasítással, hogy az ypbind be tudta-e regisztrálni a szolgáltatását a portmapper-be. A kimenetnek ilyesminek kell lennie: <tscreen><verb> program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind </verb></tscreen> vagy <tscreen><verb> program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind </verb></tscreen> attól függően, hogy milyen ypbind változatot használsz. <item>Elindíthatod a "rpcinfo -u localhost ypbind"-t is. Ez az utasítás valami hasonlót fog eredményezni: <tscreen><verb> program 100007 version 2 ready and waiting </verb></tscreen> vagy <tscreen><verb> program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting </verb></tscreen> A kimenet attól függ, hogy melyik ypbind változatot telepítetted. Csak a "version 2" üzenet fontos. </itemize> Ettől a ponttól kezdve használhatod az olyan NIS kliens programokat, mint például az ypcat, stb... Például "ypcat passwd.byname" visszaadja neked a teljed 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: <tscreen><verb> /var/yp </verb></tscreen> Ennek a könyvtárnak léteznie KELL az ypbind sikeres indulásához. Ahhoz, hogy leellenőrizd, hogy a körzetnév helyes, 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 az indító démon állományokat, 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. <sect1>NIS Kliens beállítása Hagyományos NIS használatával <nidx>NIS!client setup</nidx> <p> Gépnév feloldáshoz be kell állítanod (vagy hozzá kell adnod) a "nis"-t a feloldás sorrendjének sorához a /etc/host.conf állományban. Nézd meg a "resolv+.8" manuált a részletes leírásért. Add hozzá a NIS kliensed /etc/passwd állományához a következő sort: <tscreen><verb> +:::::: </verb></tscreen> 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á a /etc/passwd állományodhoz a -guest -et. Más parancsértelmezőt (pl. 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 a /etc/passwd állományodhoz. Azokat a mezőket, amelyeket nem akarsz használni, üresen kell hagyni. Használhatod a Netgroups-t felhasználó szabályozáshoz. Például ahhoz hogy csak miquels, dth és ed, valamint a sysadmin hálózati csopotz 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: <tscreen><verb> +miquels::::::: +ed::::::: +dth::::::: +@sysadmins::::::: -ftp +:*::::::/etc/NoShell </verb></tscreen> 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: <tscreen><verb> sysadmins (-,software,) (-,kukuk,) </verb></tscreen> FONTOS: A hálózati csoport jellemző 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! <sect1>NIS Kliens beállítása NYS használatával <nidx>NYS!client setup</nidx> <p> Mindössze csak arra van szükséged, hogy a NIS konfigurációs állomány (/etc/yp.conf) a helyes szerver(ek)re mutasson az információkért. Ezen kívül a Név Szolgáltatás Kapcsoló konfigurációs állományát (/etc/nsswitch.conf) helyesen be kell állítani. Az ypbind-et fel kell még telepítened. Erre nem a libc-nek, hanem a NIS(YP) tools-nak van szüksége. Ha szeretnéd használni a felhasználók hozzáadása/kizárása jellemzőt (+/-guest/+@admins), "passwd: compat"-t és "group: compat"-t be kell az nsswitch.conf-ba tenned. Jegyezzük meg, hogy nincs "shadow: compat"! "shadow: files nis"-t kell használnod ebben az esetben. A NYS források nem részei az 5-ös libc forrásnak. Ha a configure-t futtatod, mondj első alkalommal "NO"-t a "Values correct" kérdésre, és utána "YES"-t a "Build a NYS libc from nys". <sect1>NIS Kliens beállítása glibc 2.x segítségével <nidx>NIS!client setup!using glibc 2.x</nidx> <p> A glibc a "hagyományos NIS"-t használja, tehát el kell indítanod az ypbind-et. A Név Szolgáltatás Kapcsoló konfigurációs állományát (/etc/nsswitch.conf) helyesen be kell állítani. Ha a compat módot használod a passwd-hez, shadow-hoz vagy a group-hoz, hozzá kell adnod ezen állományok végéhez a "+"-t, és használhatod a felhasználó hozzáadás/kizárás jellemzőt. A beállítás ugyanilyen Solaris 2.x esetén is. <sect1>Az nsswitch.conf állomány <nidx>nsswitch.conf file</nidx> <nidx>NIS!nsswitch.conf file</nidx> <p> A Hálózati Szolgáltatások kapcsoló állomány (/etc/nsswitch.conf) határozza meg egy meghatározott információ csoport lekérdezésekor a feloldások sorrendjét, hasonlóan ahogy a /etc/host.conf állomány meghatározza, hogy milyen módon történjen a gépnév feloldása. Például a <tscreen><verb> hosts: files nis dns </verb></tscreen> sor megmondja, hogy a gépnév feloldás függvény először a helyi /etc/hosts állományt 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 állományt minden felhasználó számára olvashatóvá kell tenni! Több információt találsz még erről a nsswitch.5, vagy a nsswitch.conf.5 manuálokban. Egy NIS számára jó /etc/nsswitch.conf állomány például: <tscreen><verb> # # /etc/nsswitch.conf # # Egy példa Név Szolgáltatás Kapcsoló konfigurációs állomány. Ezt az # állományt ú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 állományokat # 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 </verb></tscreen> A passwd_compat, group_compat és shadow_compat csak glibc 2.x alatt támogatott. Ha nincs shadow szabály a /etc/nsswitch.conf állományban, 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. Bővebb információért olvasd el a glibc dokumentációját. <sect1> Árnyék jelszavak NIS-sel <nidx>NIS!shadow passwords</nidx> <p> 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 arra, hogy elkerüld az árnyék jelszavak használatát NIS felett, hogy csak a helyi felhasználók esetén használsz árnyék jelszót a /etc/shadow állományban. Vedd ki a NIS felhasználó bejegyzéseket az árnyék adatbázisból, és tedd vissza a jelszót a passwd állományba. Í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. <sect2>Linux <p> Az egyetlen Linux libc, amely támogatja az árnyék jelszavak NIS feletti használatát a GNU C 2.x könyvtár. A Linux libc5-ben nincs ehhez támogatás. A Linux libc5 engedélyezett NYS-sel lefordítva tartalmaz némi kódot hozzá. Azonban ez a kód hibásan törött néhány esetben, és nem működik minden helyesen árnyék bejegyzéssel. <sect2>Solaris <p> Solaris nem támogatja a NIS feletti árnyékjelszavakat. <sect2>PAM <nidx>PAM!shadow passwords</nidx <p> PAM nem támogatja a NIS feletti árnyék jelszavakat, különösen a pam_pwdb/libpwdb. Ez elég nagy probléma a RedHat 5.x felhasználók számára. Ha van glibc-d és PAM-od, meg kell változtatnod a /etc/pam.d/* bejegyzéseket. Cseréld ki az összed pam_pwdb szabályt a pam_unix_* modulokban. Egy pam_unix_auth.so modul beli hiba miatt ez a modul nem mindig működik. A /etc/pam.d/login állomány például így néz ki: <tscreen><verb> #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix_auth.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_unix_passwd.so session required /lib/security/pam_unix_session.so </verb></tscreen> Az auth-hoz (hitelesítés) a pam_unix_auth.so modult, az account-hoz (azonosító) a pam_unix_acct.so modult, a password-höz (jelszó) a pam_unix_passwd.so modult és a session-höz (folyamat) a pam_unix_session.so modult kell használnod. <sect> Mire van szükséged a NIS+ beállításához? <sect1>A Szoftver <nidx>NIS+!software required</nidx> <p> A Linux NIS+ kliens kódot a GNU C 2-es könyvtárhoz fejlesztették ki. Vagy Linux libc5-höz is egy változat, hiszen a legtöbb kereskedelmi alkalmazást ehhez a könyvtárhoz láncolják és nem tudod őket glibc használatához újrafordítani. Problémák vannak a libc5 és NIS együttes használatában: statikus programokat nem lehet hozzáláncolni, és az e könyvtárhoz láncolt programok nem fognak más libc5 változatokkal működni. Meg kell szerezned, és le kell fordítanod a GNU C 2.1-es könyvtárat az Indel alapú platformokra, a GNU C 2.1.1-es könyvtárat a 64 bites platformokra. Mint bázis rendszer, szükséged lesz egy glibc alapú disztribúcióra, mint például a Debian 2.x, RedHat 5.x, vagy SuSE Linux 6.x. Minden disztribúcióhoz újra kell fordítanod a gcc/g++ fordítót, libstdc++ -t és az ncurses-t. RedHat-nél sok változtatást kell eszközölni a PAM konfigurációban. SuSE Linux 6.0-nál újra kell fordítani a shadow csomagot. A NIS+ kliens szoftvert megszerezheted az alábbi címekről: <tscreen><verb> Hely Könyvtár Állomány neve ftp.funet.fi /pub/gnu/funet libc-*, glibc-crypt-*, glibc-linuxthreads-* ftp.kernel.org /pub/linux/utils/net/NIS+ nis-utils-19990223.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS+ pam_keylogin-1.2.tar.gz </verb></tscreen> glibc alapú disztribúciókat találhatsz az alábbi helyeken: <tscreen><verb> Hely Könyvtár ftp.debian.org /pub/debian/dists/slink ftp.redhat.com /pub/redhat/redhat-5.2 ftp.suse.de /pub/SuSE-Linux/6.0 </verb></tscreen> A GNU C könyvtár lefordításához kérlek, kövesd a szoftverhez kapott utasításokat. A javított, NYS-re épülő libc5-öt és a forrást, mint a hagyományos libc5 kiegészítését megtalálod az alábbi helyeken: <tscreen><verb> Hely Könyvtár Állomány neve ftp.kernel.org /pub/linux/utils/net/NIS+ libc-5.4.44-nsl-0.4.10.tar.gz </verb></tscreen> Nézz körül a <url url="http://www.suse.de/~kukuk/linux/nisplus.html" name="http://www.suse.de/~kukuk/linux/nisplus.html"> helyeken bővebb információkért, és a legfrisebb forrásokért. <sect1>NIS+ kliens beállítása <nidx>NIS+!client setup</nidx> <p> FONTOS: NIS+ kliens beállításához olvasd el a Solaris NIS+ dokumentációkat, hogy 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 a NIS+ szerveren. Győződj meg róla, hogy a portmap fut. Ezután ellenőrizd, hogy a Linux PC-d ideje megegyezik a NIS+ szerverével. A biztonságos RPC legfeljebb 3 perces ablak áll rendelkezésre, amíg a megbízólevelek érvényesek. Jó ötlet minden gépen az xntpd futtatása. Mindezek után futtasd a következőket: <tscreen><verb> domainname nisplus.domain. nisinit -c -H <NIS+ server> </verb></tscreen> hogy inicializáld a hideg indító állományokat. Olvasd el az nisinit manuált 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 a /etc/nsswitch.conf állományt. 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 <tscreen><verb> keylogin -r </verb></tscreen> parancsot, hogy eltárold a rendszered root titkos kulcsát. (Remélem hozzáadtad az új gép publickey-ét a NIS+ szerverhen?). A "niscat passwd.org_dir" parancsnak mostanra meg kell mutatnia a passwd adatbázisod összes bejegyzését. <sect1>NIS+, keylogin, bejelentkezés és PAM <nidx>NIS+!use of PAM with</nidx> <p> Amikor a felhasználó bejelentkezik, meg kell adnia a titkos kulcsát a keyserv-nek. Ezt a "keylogin" parancs hívásával teszi meg. Az árnyék csomagban lévő login megteszi ezt a felhasználónak, ha glibc-2.1-el volt lefordítva. A PAM alapú bejelentkezéshez fel kell telepíteni a pam_keylogin-1.2.tar.gz-t, ls meg kell változtatni a /etc/pam.d/login állományt úgy, hogy a pam_unix_auth-ot használja, ne a pwdb-t, ami nem támogatja a NIS+ -t. Például: <tscreen><verb> #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_keylogin.so auth required /lib/security/pam_unix_auth.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_unix_passwd.so session required /lib/security/pam_unix_session.so </verb></tscreen> <sect1>Az nsswitch.conf állomány <nidx>nsswitch.conf file</nidx> <nidx>NIS+!nsswitch.conf file</nidx> <p> A Hálózati Szolgáltatások kapcsoló állomány (/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 a /etc/host.conf állomány megadja az utat a gépnév feloldáshoz. Például a <tscreen><verb> hosts: files nisplus dns </verb></tscreen> sor megadja, hogy a gépnév feloldó függvény először a helyi /etc/hosts állományt 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 jó NIS+ /etc/nsswitch.conf állomány: <tscreen><verb> # # /etc/nsswitch.conf # # Egy példa Név Szolgáltatás Kapcsoló konfigurációs állomány. Ezt az # állományt ú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 Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat # libc5-höz: passwd: files nisplus group: compat # libc5-höz: group: files nisplus shadow: compat # libc5-höz: shadow: files nisplus 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 </verb></tscreen> <sect>NIS szerver beállítása<label id=ypserv> <nidx>NIS!server setup</nidx> <sect1>Az ypserv Szerver Program <nidx>ypserv!setup</nidx> <nidx>NIS!ypserv setup</nidx> <p> Ez a dokumentáció csak az "ypserv" NIS szerver beállítását tartalmazza. A NIS szerver szoftvert megtalálod a <tscreen><verb> Hely Könyvtár Állomány neve ftp.kernel.org /pub/linux/utils/net/NIS ypserv-1.3.6.tar.gz </verb></tscreen> helyen. Bővebb információkat találsz még a <url url="http://www.suse.de/~kukuk/linux/nis.html" name="http://www.suse.de/~kukuk/linux/nis.html"> címen. A hagyományos NIS és a NYS szerver beállítása megegyezik. Az <tt>ypserv</tt> és <tt>makedbm</tt> programok elkészítéséhez fordítsd le a szoftvert. Konfigurálhatod az ypserv-et securenets állományok vagy tcp_wrapper-ek használatára. A tcp_wrapper sokkal rugalmasabb, de sokaknak nagy problémáik vannak vele, valamint néhány konfigurációs állomány memóriahiányt tud okozni. Ha problémád van a tpc_wrapper használatával lefordított ypserv-vel, fordítsd újra securenets állományok használatával. Az ypserv --version megmondja, hogy melyik verziót használod. Ha a szerveredet mesterként futtatod, határozd meg, hogy melyik állományokat 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 <tt>/var/yp/Makefile</tt> állományban. Mindig célszerű megnézned, és megfelelően szerkeszteni az Opciókat 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 állomány kezelők cache-ltek. 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ó <tt>/var/yp/Makefile</tt>-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 <tt>/var/yp/securenets</tt> és a <tt>/etc/ypserv.conf</tt> állományokat. Bővebb információkért olvasd el az ypserv(8) és az ypserv.conf(5) manuál oldalakat. Bizonyosodj meg róla, hogy a portmapper (portmap(8)) fut, és indítsd el az <tt>ypserv</tt> szervert. A <tscreen><verb> % rpcinfo -u localhost ypserv </verb></tscreen> utasításnak hasonlóan kell kinéznie ehhez: <tscreen><verb> program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting </verb></tscreen> 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 állományt 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 <tscreen><verb> % /usr/lib/yp/ypinit -m </verb></tscreen> parancsot. A szolgán nézd meg, hogy működik-e az <tt>ypwhich -m</tt>. Ez azt jelenti, hogy a szolgát NIS kliensként kell beállítani, mielőtt elindíthatnád a <tscreen><verb> % /usr/lib/yp/ypinit -s masterhost </verb></tscreen> programot, hogy beüzemeld a gépet NIS szolgának. Nos, a szervered fennvan, és működik. Ha nagyobb problémáid vannak, elindíthatod az <tt>ypserv</tt> és <tt>ypbind</tt> nyomkövető üzemmódban is különböző xterm-ekben. A nyomkövetés kimenetének mutatnia kell, hogy mi romlik el. Ha map-et kell frissítened, futtasd a NIS mester szerveren a <tt>make</tt>-t a <tt>/var/yp</tt> könyvtárban. Ez frissíteni fogja a map-et, ha a forrás állomány frisebb, majd át is adja a szolga szervereknek is. Kérlek ne használd a map frissítéshez az <tt>ypinit</tt>-et. Esetleg szeretnéd átszerkeszteni a root crontabját *a szolga* szerveren és hozzáadni a következő sorokat: <tscreen><verb> 20 * * * * /usr/lib/yp/ypxfr_1perhour 40 6 * * * /usr/lib/yp/ypxfr_1perday 55 6,18 * * * /usr/lib/yp/ypxfr_2perday </verb></tscreen> Ez biztosítani fogja, hogy a legtöbb NIS map frissítődjö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 futtatsd a <tscreen><verb> % /usr/lib/yp/ypinit -s masterhost </verb></tscreen> programot az új szolgán. A mester szerveren add hozzá a <tt>/var/yp/ypservers</tt>-hez az új szolga szerver nevét és futtasd a <tt>make</tt>-t a <tt>/var/yp</tt> könyvtárban, hogy frissítsed a map-et. 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 a /etc/passwd jelszó állományhoz _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: <tscreen><verb> 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 [ A hagyományos felhasználók EZUTÁN a sor után következnek! ] tester:*:299:10:Just a test account:/tmp: miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh </verb></tscreen> Bár a "tester" felhasználó létezik, a parancsértelmezője azonban a /etc/NoShell. miquels-nek rendes hozzáférése lesz. Alternatívaként átszerkesztheted a <tt>/var/yp/Makefile</tt> állományt és beállíthatod, hogy a NIS másik jelszó forrás állományt használjon. Nagy rendszereken a NIS jelszó és csoport állományok általában a <tt>/etc/yp/</tt> könyvtárban vannak. Ha a hagyományos eszközöket használod, hogy a <tt>passwd</tt>, <tt>chfn</tt>, <tt>adduser</tt> állományokat adminisztráld, nem fognak működni. Saját készítésű programokra lesz ehhez szükséged. Habár az <tt>yppasswd</tt>, <tt>ypchsh</tt> és az <tt>ypchfn</tt> természetesen működni fog. <sect1>Az yps szerver program <nidx>NIS!yps server</nidx> <nidx>yps NIS server</nidx> <p> Az "yps" NIS szerver beállításához tanulmányozd az előző fejezetet. Az "yps" szerver beállítása hasonló, _de_ nem pontosan ugyanolyan, tehát légy óvatos, mielőtt megpróbálod az "ypserv" utasításait az "yps"-re alkalmazni! Az "yps"-t nem támogatja egyik szerző sem, és néhány biztonsági lyukat is tartalmaz. Tényleg nem kellene használod! Az "yps" NIS szerver szoftvert megtalálod az alábbi címeken: <tscreen><verb> Hely Könyvtár Állomány neve ftp.lysator.liu.se /pub/NYS/servers yps-0.21.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS yps-0.21.tar.gz </verb></tscreen> <sect1>Az rpc.ypxfrd program <nidx>NIS|rpc.ypxfrd daemon</nidx> <nidx>rpc.ypxfrd daemon</nidx> <p> Az rpc.ypxfrd-t nagyon nagy NIS map-ek esetén használjuk a mester és szolga NIS szerverek közötti adatátvitel felgyorsítására. Ha egy NIS szolga szerver olyan üzenetet kap, hogy új map készült, elindítja az ypxfr-t, hogy letöltse a map-et. Az ypxfr elolvassa a mester szerver map-jét az yp_all() függvény segítségével. Ez a folyamat több percet is igénybe vehet, ha nagyon nagy map-ekről van szó, amit az adatbázis könyvtárban kell tárolni. Az rpc.ypxfrd szerver úgy gyorsítja az átvitel folyamatát, hogy a NIS szolga szervereknek engedélyezi, hogy egyszerűen lemásolják a szerver map állományait, és ne kelljen újra felépíteniük a sajátjukat. Az rpc.ypxfrd RPC-alapú állomány átviteli protokollt használ, tehát nincs szükség új map építésére. Az rpc.ypxfrd indítható az inetd-ből, azonban mivel nagyon lassan indul el, célszerű az ypserv segítségével indítani. Az rpc.ypxfrd-t csak a mester NIS szerveren kell elindítanod. <sect1>Az rpc.yppasswdd program <nidx>NIS!rpc.yppasswdd daemon</nidx> <nidx>rpc.yppasswdd daemon</nidx> <p> Amikor a felhasználók megváltoztatják a jelszavukat, a NIS jelszó adatbázis és feltehetőleg az összen ettől a NIS jelszó adatbázistól függő többi adatbázis frissítésre szorul. Az "rpc.yppasswdd" program egy olyan szerver, ami a jelszóváltozásokat kezeli, és gondoskodik arról, hogy a NIS információ helyesen frissítődjön. Az rpc.yppasswdd már az ypserv része. Nincs szükséged régi, különálló yppasswd-0.9.tar.gz-re, vagy yppasswd-0.10.tar.gz-re, és nem is javallott a továbbiakban használatuk. Az ypserv-1.3.2-beli rpc.yppasswdd teljes árnyék támogatást tartalmaz. Az yppasswd már az yp-tools-2.2.tar.gz része. Az rpc.yppasswdd-t csak a mester NIS szerveren kell elindítanod. Alapértelmezés szerint a felhasználók nem változtathazják meg a teljes nevüket, illetve a parancsértelmezőjüket. Engedélyezheted ezek megváltoztatását a -e chfn vagy -e chsh kapcsolókkal. Ha a jelszó vagy az árnyék állományok nem a /etc könyvtárban vannak, a -D kapcsolót is használnod kell. Például ha minden forrás állományt a /etc/yp könyvtárba tettél, és szeretnéd engedélyezni a felhasználók számára, hogy megváltoztathassák a parancsértelmezőjüket, a következő paraméterekkel kell indítanod az rpc.yppasswdd-t: <tscreen><verb> rpc.yppasswdd -D /etc/yp -e chsh </verb></tscreen> vagy <tscreen><verb> rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh </verb></tscreen>. Nincs más tennivaló, már csak meg kell győződnöd róla, hogy az <tt>rpc.yppasswdd</tt> ugyanazt az állományt használja, mint a <tt>/var/yp/Makefile</tt>. A hibákat a syslog naplózza. <sect>A NIS/NYS telepítésének ellenőrzése <nidx>NIS!verification of operation</nidx> <nidx>NYS!verification of operation</nidx> <p> 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ó állományodat a NIS adja, a <tscreen><verb> % ypcat passwd </verb></tscreen> utasításnak vissza kell adnia a NIS jelszó állományod tartalmát. A <tscreen><verb> % ypmatch userid passwd </verb></tscreen> 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ó állomány beli 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: <tscreen><verb> #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("felhasználó 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("parancsértelmező.: [%s]\n",pwd->pw_shell); } else fprintf(stderr,"A(z) \"%s\" felhasználó nem található!\n",argv[1]); exit(0); } </verb></tscreen> 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) egy getent eszközzel jön. Ezt használhatod a fenti program helyett egy ilyen rendszeren. Kipróbálhatod: <tscreen><verb> getent passwd </verb></tscreen> vagy <tscreen><verb> getent passwd login </verb></tscreen> <sect>Általános problémák és NIS hibaelhárítása <nidx>NIS!troubleshooting</nidx> <nidx>NIS!problems with</nidx> <p> Íme néhány általános, felhasználók által jelzett probléma: <enum> <item>A 4.5.19-eshez szállított könyvtárak hibásak. NIS nem működik vele. <item>Ha a 4.5.19-es könyvtárakat 4.5.24-re frissíted, akkor az 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 könyvtárakat is. <item>Amikor egy NIS szervert lekapcsolnak, majd újra bekapcsolnak, az ypbind a következő üzenettel indul: <verb> yp_match: clnt_call: RPC: Unable to receive; errno = Connection refused </verb> és a bejelentkezéseket megtagadja azoknak, akik a NIS adatbázisban regisztrálva vannak. Megpróbálkozhatsz root-ként bejelentkezni, és legyilkolni az ypbind-et, majd újra elindítani. Egy 3.3-as, vagy nagyobb verziószámú ypbind frissítés is segíthet. <item>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 frisebb yp-tools-ra lesz szükséged az 5.4.21-es, vagy frisebb 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 könyvtárral működnie kell. <item>a 5.4.21 - 5.4.35 számú libc-ben az yp_maplist törött, 5.4.36-es, vagy frisebb változatra van szükséged, vagy néhány YP programo, mint például az ypwhich segfault-olni fog. <item>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. <item>ypcat shadow nem mutatja a shadow map-et. Ez így helyes, az árnyék térkép neve shadow.byname, nem shadow. <item>Solaris nem mindig használ privilegizált kapukat, tehát ne használj password mangling-et ha Solaris kliensed is van. </enum> <sect>Gyakran Feltett Kérdések <nidx>NIS!frequently asked questions</nidx> <p> Mostanra a legtöbb kérdésedre válasz kellett, hogy kapjál. Ha még mindig lenne megválaszolatlan kérdésed, küldj egy üzenetet a <tscreen><verb> comp.os.linux.networking </verb></tscreen> hírcsoportba. </article>