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 The RPC Portmapper fejezetet!
A NIS-HOWTO-t szerkeszti, és karbantartja:
Thorsten Kukuk, <kukuk@suse.de>
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:
Andrea Dell'Amico <adellam@ZIA.ms.it>
Mitchum DSouza <Mitch.DSouza@NetComm.IE>
Erwin Embsen <erwin@nioz.nl>
Peter Eriksson <peter@ifm.liu.se>
Mindig megtalálhatod a legfrissebb változatot, megnézheted a World Wide Web használatával a 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 http://www.suse.de/~kukuk/linux/nis-howto.html címen találod.
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.
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 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 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.
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:
Byron A Jeff <byron@cc.gatech.edu>
Markus Rex <msrex@suse.de>
Miquel van Smoorenburg <miquels@cistron.nl>
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.
Ebben a dokumentációban nagyon sok szakkifejezés található. Íme a legfontosabb szakkifejezés rövid magyarázata:
DataBase Management (Adatbázis Menedzselés), egy könyvtárnyi függvény, amelyek kulcs-tartalom párokat kezelnek egy adatbázisban.
Dynamically Linked Library (Dinamikusan Láncolt Könyvtár), futtatható programhoz futásidőben hozzákapcsolódó könyvtár.
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).
File Transfer Protocol (Állomány Átviteli Protokoll), állományok két számítógép közötti átvitelére szolgáló protokoll.
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
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.
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.
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.
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.
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.
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.
Yellow Pages(tm) (Sárga Oldalak(tm)), Az Egyesült Királysági British Telecom plc. bejegyzett védjegye.
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.
A következő 4 sor idézet a Sun(tm) Rendszer- És Hálózati Adminisztráció kézikönyvéből:
"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."
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:
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.
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.
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.
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.
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 /etc/passwd
és a
/etc/group
á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.
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).
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:
#
# Az Idő szolgáltatás óra egyeztetésre használatos
#
time stream tcp nowait root internal
time dgram udp wait root internal
FONTOS: Ne feletkezz el a konfigurációs állományok változtatása után az inetd újraindításáról!
Ahhoz, hogy válaszolni tudj e kérdésre, két esetet kell megvizsgálni:
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 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.
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:
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
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.
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:
ypserver voyager
ypserver defiant
ypserver ds9
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:
/bin/domainname nis.körzet
ahol nis.körzet
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.
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 637 ypbind
100007 2 tcp 639 ypbind
vagy
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
attól függően, hogy milyen ypbind változatot használsz.
program 100007 version 2 ready and waiting
vagy
program 100007 version 1 ready and waiting
program 100007 version 2 ready and waiting
A kimenet attól függ, hogy melyik ypbind változatot telepítetted.
Csak a "version 2" üzenet fontos.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:
/var/yp
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.
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:
+::::::
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:
+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 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!
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".
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.
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
hosts: files nis dns
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:
#
# /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
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.
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.
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.
Solaris nem támogatja a NIS feletti árnyékjelszavakat.
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:
#%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
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.
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:
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
glibc alapú disztribúciókat találhatsz az alábbi helyeken:
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
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:
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
Nézz körül a http://www.suse.de/~kukuk/linux/nisplus.html helyeken bővebb információkért, és a legfrisebb forrásokért.
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:
domainname nisplus.domain.
nisinit -c -H <NIS+ server>
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
keylogin -r
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.
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:
#%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
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
hosts: files nisplus dns
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:
#
# /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
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 Állomány neve
ftp.kernel.org /pub/linux/utils/net/NIS ypserv-1.3.6.tar.gz
helyen.
Bővebb információkat találsz még a http://www.suse.de/~kukuk/linux/nis.html címen.
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. 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 /var/yp/Makefile
á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ó
/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
á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 ypserv
szervert. A
% rpcinfo -u localhost ypserv
utasításnak hasonlóan kell kinéznie 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 á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
% /usr/lib/yp/ypinit -m
parancsot. A szolgán nézd meg, hogy működik-e az ypwhich -m
.
Ez azt jelenti, hogy a szolgát NIS kliensként kell beállítani, mielőtt
elindíthatnád a
% /usr/lib/yp/ypinit -s masterhost
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 ypserv
és
ypbind
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
make
-t a /var/yp
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 ypinit
-et.
Esetleg szeretnéd átszerkeszteni 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í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
% /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
-t a /var/yp
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:
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
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 /var/yp/Makefile
á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 /etc/yp/
könyvtárban vannak. Ha a hagyományos eszközöket használod, hogy a passwd
,
chfn
, adduser
állományokat adminisztráld, nem fognak működni.
Saját készítésű programokra lesz ehhez szükséged.
Habár az yppasswd
, ypchsh
és az ypchfn
természetesen
működni fog.
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:
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
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.
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:
rpc.yppasswdd -D /etc/yp -e chsh
vagy
rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh
.
Nincs más tennivaló, már csak meg kell győződnöd róla, hogy az
rpc.yppasswdd
ugyanazt az állományt használja, mint a
/var/yp/Makefile
.
A hibákat a syslog naplózza.
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
% ypcat passwd
utasításnak vissza kell adnia a NIS jelszó állományod 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ó á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:
#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);
}
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:
getent passwd
vagy
getent passwd login
Íme néhány általános, felhasználók által jelzett probléma:
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-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.
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
comp.os.linux.networking
hírcsoportba.