Opis systemów NIS(YP)/NYS/NIS+ na Linux-ie. Autor:Thorsten Kukuk kukuk@suse.de v1.0, 9 Marca 1999 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v3.0, 9 Sierpnia 1999 Dokument ten opisuje jak skonfigurowaæ Linux-a, aby dzia³a³ jako klient NIS(YP) czy NIS+ oraz jako serwer. Dokument ten zosta³ napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis tre¶ci 1. Wprowadzenie. 1.1 Nowe wersje tego dokumentu. 1.2 Zrzeczenie. 1.3 Komentarze i poprawki. 1.4 Podziêkowania. 1.5 Od t³umacza. 2. S³owniczek i informacje ogólne. 2.1 S³owniczek terminów. 2.2 Trochê ogólnych informacji. 3. NIS , NYS czy NIS+ ? 3.1 libc 4/5 z tradycyjnym NIS czy NYS ? 3.2 NIS czy NIS+ ? 4. Jak to dzia³a. 4.1 Jak dzia³a NIS. 4.2 Jak dzia³a NIS+. 5. Portmapper RPC 6. Czego potrzebujesz, aby ustawiæ NIS? 6.1 Sprawd¼ czy jeste¶ serwerem, serwerem slave czy klientem. 6.2 Oprogramowanie. 6.3 Demon ypbind. 6.4 Ustawianie kilenta NIS przy u¿yciu Tradycyjnego NIS-a. 6.5 Ustawianie klienta NIS u¿ywaj±c NYS. 6.6 Ustawianie klienta NIS u¿ywaj±c glibc 2.x 6.7 Plik nsswitch.conf 6.8 Shadow Passwords z NIS i PAM. 6.8.1 Linux 6.8.2 Solaris 6.8.3 PAM 7. Czego potrzebujesz do ustawienia NIS+? 7.1 Oprogramowanie. 7.2 Konfiguracja klienta NIS+. 7.3 NIS+, keylogin, login i PAM. 7.4 Plik nsswitch.conf. 8. Konfiguracja serwera NIS. 8.1 Program ypserv. 8.2 Program serwera yps. 8.3 Program rpc.ypxfrd 8.4 Program rpc.yppasswdd 9. Weryfikacja instalacji NIS/NYS. 10. Popularne problemy i rozwi±zywanie ich. 11. Czêsto zadawane pytania. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Coraz wiêcej komputerów z Linux-em instalowanych jest jako czê¶æ sieci komputerowych. Aby upro¶ciæ administracjê sieci± wiêkszo¶æ sieci (g³ównie oparte na Sun-ach) posiada Network Information Service. Maszyny Linux-owe mog± w pe³ni korzystaæ z serwera NIS albo samemu dostarczaæ tak± us³ugê. Linux mo¿e tak¿e dzia³aæ jako pe³ny klient NIS+, obs³uga tego jest jeszcze w fazie beta. Dokument ten próbuje odpowiedzieæ na pytania dotycz±ce ustawienia NIS(YP) i NIS+ na twoim komputerze. Nie zapomnij przeczytaæ sekcji na temat ``Portmapper-a RPC''. NIS-HOWTO zajmuje siê Thorsten Kukuk, <tt/kukuk@vt.uni-paderborn.de/ Pierwotnym ¼ród³em informacji dla pierwszej wersji NIS-HOWTO byli: Andrea Dell'Amico <adellam@ZIA.ms.it> Mitchum DSouza <Mitch.DSouza@NetComm.IE> Erwin Embsen <erwin@nioz.nl> Peter Eriksson <peter@ifm.liu.se> którym powinni¶my podziêkowaæ za napisanie pierwszych wersji tego dokumentu. 11..11.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Najnowsz± wersjê tego dokumentu mo¿esz zawsze znale¼æ pod adresem http://www.suse.de/~kukuk/linux/HOWTO/NIS-HOWTO.html. Najnowsze wersje bêd± tak¿e umieszczane na ró¿nych serwerach WWW i FTP zwi±zanych z Linux-em w³±cznie ze stron± LDP. Odno¶niki do t³umaczeñ tego dokumentu mo¿na znale¼æ pod adresem http:///www.suse.de/~kukuk/linux/nis-howto.html. 11..22.. ZZrrzzeecczzeenniiee.. Pomimo, i¿ dokument ten powsta³ w jak najlepszej intencji mo¿e i pewnie zawiera b³êdy. Czytaj proszê wszystkie pliki README znajduj±ce siê wraz z oprogramowaniem wymienianym tutaj w celu uzyskania jak naj¶wie¿szych informacji. Bêdê sie stara³ aby by³o tu jak najmniej b³êdów. 11..33.. KKoommeennttaarrzzee ii ppoopprraawwkkii.. Je¶li masz jakie¶ pytania czy poprawki dotycz±ce tego dokumentu, pisz ¶mia³o do Thorstena Kukuk na adres kukuk@suse.de. Przyjmujê wszelkie sugestie czy krytykê. Je¶li znajdziesz jaki¶ b³±d daj mi znaæ proszê, ¿ebym móg³ go poprawiæ w nastêpnej wersji. Dziêki. Proszê _n_i_e przysy³aj mi pytañ na temat problemów dotycz±cych twojej dystrybucji Linux-a. Nie znam ka¿dej dystrybucji. Ale bêdê siê stara³ dodaæ ka¿de rozwi±zanie jaki mi przy¶lecie. 11..44.. PPooddzziiêêkkoowwaanniiaa.. Chcieliby¶my podziêkowaæ wszystkim ludziom, którzy przyczynili siê w jaki¶ sposób do powstania i rozwoju tego dokumentu. W porz±dku alfabetycznym: Byron A Jeff <byron@cc.gatech.edu> Markus Rex <msrex@suse.de> Miquel van Smoorenburg <miquels@cistron.nl> Theo de Raadt jest odpowiedzialny za oryginalny kod yp-klienta. Swen Thuemmler przeniós³ ten kod na Linux-a jak równie¿ procedury yp do biblioteki libc (znowu na podstawie pracy Theo). Thorsten Kukuk napisa³ od zera procedury NIS(YP) i NIS+ dla GNU libc 2.x. 11..55.. OOdd tt³³uummaacczzaa.. T³umaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Je¶li znalaz³e¶ jakie¶ ra¿±ce b³êdy ortograficzne, gramatyczne, sk³adniowe, techniczne to pisz do mnie. Zaznaczam, ¿e nie jestem bieg³y w terminologii kryptografii wiêc wystepuj± tu pewnie jakie¶ dziwne wyra¿enia, które powinienem zapisaæ inaczej. Je¶li wiesz jak to ma brzmieæ, napisz; B.Maruszewski@jtz.org.pl Oficjaln± stron± t³umaczeñ HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przet³umaczonych dokumentów znajduj± siê na tej¿e stronie. Dostêpne s± tak¿e poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /JTZ/. Przet³umaczone przeze mnie dokumenty znajduj± siê tak¿e na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> S± tam te¿ odwo³ania do Polskiej Strony T³umaczeniowej. Kontakt z nasz± grup±, grup± t³umaczy mo¿esz uzyskaæ poprzez listê dyskusyjn± jtz@ippt.gov.pl. Je¶li chcesz sie na ni± zapisaæ, to wy¶lij list o tre¶ci subscribe jtz Imiê Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez t³umacza to odwo³ania do polskich serwerów ftp. 22.. SS³³oowwnniicczzeekk ii iinnffoorrmmaaccjjee ooggóóllnnee.. 22..11.. SS³³oowwnniicczzeekk tteerrmmiinnóóww.. W dokumencie tym wystêpuje wiele akronimów. Oto te najwa¿niejsze i krótkie wyja¶nienie: DDBBMM DataBase Management - biblioteka funkcji, które obs³uguj± pary z kluczem (-key-content) w bazie danych. DDLLLL Dynamically Linked Library - biblioteka do³±czana do wykonywalnego programu podczas jego dzia³ania. ddoommaaiinnnnaammee "Nazwa-klucz", która jest u¿ywana przez klientów NIS, aby zlokalizowaæ pasuj±cy serwer NIS, który udostepnia klucz dla domeny (domainname key). Zauwa¿ proszê, ¿e to nie koniecznie ma co¶ wspólnego z domen± DNS-ow± (nazw± maszyny). FFTTPP File Transfer Protocol - protokó³ u¿ywany do przenoszenia plików pomiêdzy komputerami. lliibbnnssll Name services library - biblioteka odwo³añ "name service" (getpwnam, getservbyname itp.) na unix-ach SVR4. GNU libc u¿ywa tego do funkcji NIS (YP) i NIS+. lliibbssoocckkeett Socket services library - biblioteka odwo³añ obs³ugi gniazdek (socket, bind, listen itp.) na unix-ach SVR4. NNIISS Network Information Service - serwis który udostêpnia informacjê, która musi byæ znana poprzez sieæ dla wszystkich maszyn w sieci. W standardowej bibliotece Linux-a - libc - jest obs³uga dla NIS, która dalej zwana jest "tradycyjnym NIS-em". NNIISS++ Network Information Service (Plus :-) - w³a¶ciwie to taki NIS na sterydach. NIS+ zosta³ zaprojektowany przez Sun Microsystems Inc. jako zastêpca NIS-a z lepszym bezpieczeñstwem i lepsz± obs³ug± _wielkich_ instalacji. NNYYSS Jest to nazwa projektu, który powsta³ z NIS+, YP i Switch i zarz±dzany jest przez Petera Erikssona <peter@ifm.liu.se>. Miêdzy innymi zawiera powtórn± implementacjê kodu NIS-a (=YP), która u¿ywa funkcjonalno¶ci Name Service Switch biblioteki NYS. NNSSSS Name Service Switch. Plik /etc/nsswitch.conf okre¶la kolejno¶æ, w jakiej sprawdza siê pewne ¿±dane informacje. RRPPCC Remote Procedure Call. Procedury RPC pozwalaj± programom w C odwo³ywaæ siê do procedur na odleg³ej maszynie poprzez sieæ. Kiedy ludzie mówi± o RPC to najczê¶ciej maj± na my¶li wariant Sun-a RPC. YYPP Yellow Pages(TM) - zarejestrowany znak towarowy w UK firmy British Telecom plc. TTCCPP--IIPP Transmission Control Protocol/Internet Protocol. To protokó³ komunikacji danych najczê¶ciej u¿ywany na maszynach unix-owych. 22..22.. TTrroocchhêê ooggóóllnnyycchh iinnffoorrmmaaccjjii.. Nastêpuj±ce 3 linijki to cytat z podrêcznika Sun(TM) System & Network Administration Manual: "NIS znany by³ wcze¶niej jako Sun Yellow Pages (YP), ale nazwa Yellow Pages(TM) jest zarejestrowanym znakiem towarowym w Zjednoczonym Królestwie firmy British Telecom plc i nie mo¿e byæ u¿ywana bez zgody." NIS to skrót od Network Information Service. Celem jego jest dostarczanie informacji, która musi byæ znana na sieci dla wszystkich komputerów. Informacja, która najprawdopodobniej bêdzie dystrybuowana to: · login/has³a/katalogi domowe (/etc/passwd) · informacje o grupach (/etc/group) Je¶li na przyk³ad informacja o twoim ha¶le jest zapisana w bazie hase³ NIS, bêdziesz móg³ siê zalogowaæ na wszystkich maszynach na sieci, które maj± uruchomionego klienta NIS. Sun jest znakiem towarowym Sun Microsystems, Inc. licencjonowane dla SunSoft, Inc. 33.. NNIISS ,, NNYYSS cczzyy NNIISS++ ?? 33..11.. lliibbcc 44//55 zz ttrraaddyyccyyjjnnyymm NNIISS cczzyy NNYYSS ?? Wybór pomiêdzy "tradycyjnym NIS" czy kodem NIS w bibliotece NYS jest wyborem pomiêdzy lenistwem i rozwojem a elastyczno¶ci± i zami³owaniem do przygody. Kod "tradycjnego NIS" jest w standardowej bibliotece C i istnieje ju¿ d³ugo i czasem cierpi z powodu swojego wieku i pewnej nieelastyczno¶ci. Kod NIS w bibliotece NYS wymaga rekompilacji biblioteki libc, aby w³±czyæ do niej kod NYS (albo mo¿esz wzi±æ ju¿ skompilowan± wersjê libc od kogo¶ kto ju¿ j± skompilowa³). Inn± ró¿nic± jest to, ¿e "tradycyjny NIS" ma pewn± obs³ugê NIS Netgroups, której NYS nie ma. Z drugiej strony NYS pozwala obs³ugiwaæ Shadow Passwords w sposób przezroczysty. "Tradycyjny NIS" nie obs³uguje Shadow passwords przez NIS. Zapomnij o tym wszystkim je¶li u¿ywasz nowej biblioteki GNU C 2.x (aka libc6). Ma ona rzeczywist± obs³ugê NSS (Name Switch Service), co czyni j± bardzo elastyczn± oraz zawiera obs³ugê nastêpuj±cych map NIS/NIS+: aliases, ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services i shadow. Biblioteka GNU C nie ma ¿adnych problemów z shadow password przez NIS. 33..22.. NNIISS cczzyy NNIISS++ ?? Wybór miêdzy NIS a NIS+ jest prosty - u¿yj NIS-a je¶li nie musisz u¿ywaæ NIS+ czy nie musisz stosowaæ zaostrzonego bezpieczeñstwa. Z NIS+ jest _o wiele_ wiêcej k³opotów je¶li chodzi o administracjê (jest nim ca³kiem ³atwo zarz±dzaæ od strony klienta, ale serwer to horror). Innym problemem jest fakt, ¿e wsparcie dla NIS+ w Linux-ie jest ci±gle w fazie rozwoju - potrzebujesz najnowszej biblioteki glibc, albo musisz poczekaæ na glibc 2.1. Istnieje wersja zastêpcza glibc z obs³ug± NIS+ dla libc5. 44.. JJaakk ttoo ddzziiaa³³aa.. 44..11.. JJaakk ddzziiaa³³aa NNIISS.. W ca³ej sieci musi byæ przynajmniej jedna maszyna dzia³aj±ca jako serwer NIS. Mo¿esz zrobiæ wiêcej serwerów NIS, ka¿dy dla innej "domeny" NIS - albo mo¿esz mieæ wspó³pracuj±ce serwery NIS, gdzie jeden ma byæ g³ównym serwerem NIS (master) a wszystkie inne s± tak zwanymi slave NIS servers (to znaczy dla pewnej "domeny" NIS!) - albo mo¿esz to pomieszaæ. Serwery slave posiadaj± tylko kopiê baz danych NIS i otrzymuj± te kopie od g³ównego serwera NIS kiedy tylko robione s± jakie¶ zmiany w g³ównej bazie. W zale¿no¶ci od liczby komputerów w twojej sieci, mo¿esz zdecydowaæ siê na instalacjê jednego lub wiêkszej ilo¶ci serwerów slave. Kiedy tylko serwer NIS jest unieruchamiany (goes down) albo jest zbyt wolny w odpowiedziach na ¿±dania, klient NIS-a pod³±czony do tego serwera spróbuje znale¼æ ten, który dzia³a albo jest szybszy. Bazy danych NIS s± w tak zwanym formacie DBM, pochodz±cym od baz danych ASCII. Na przyk³ad, pliki /etc/passwd i /etc/group mog± byæ bezpo¶rednio zamienione na DBM przy pomocy oprogramowania translacyjnego ASCII-na-DBM ("makedbm" - dostarczanym wraz z serwerem). G³ówny serwer NIS powinien posiadaæ obie bazy - tak ASCII jak i DBM. Serwery slave zostan± powiadomione o ka¿dej zmianie w mapach NIS, (poprzez program "yppush") i automatycznie uaktualni± owe zmiany, aby zsynchronizowaæ swoje bazy danych. Klienci NIS nie musz± tego robiæ poniewa¿ oni zawsze ³±cz± siê z serwerem NIS, aby odczytaæ informacje zapisane w bazach danych DBM. Stare wersje ypbind wysy³aj± adres rozg³oszeniowy (broadcast), aby znale¼æ dzia³aj±cy serwer NIS. Jest to niebezpieczne poniewa¿ ka¿dy mo¿e zainstalowaæ serwer NIS i odpowiedzieæ na takie zapytanie. Nowsze wersje ypbind (3.3 czy mt) pobieraj± adres serwera z pliku konfiguracyjnego - i nie ma potrzeby wysy³ania adresu rozg³oszeniowego. 44..22.. JJaakk ddzziiaa³³aa NNIISS++.. NIS+ to nowa wersja "network information nameservice" z Sun-a. Najwiêksz± ró¿nic± pomiêdzy NIS i NIS+ jest obs³uga kodowania danych i autentykacja poprzez bezpieczne RPC w NIS+. Model nazewnictwa w NIS+ jest zbudowany w postaci struktury drzewiastej. Ka¿dy wêze³ w drzewie odpowiada objektowi NIS+, których mamy sze¶æ typów: katalog, pozycja (entry), grupa, do³±czenie, tablica i prywatne. Katalog NIS+, który tworzy podstawê przestrzeni nazw w NIS+ nazywa siê katalogiem "root". S± dwa specjalne katalogi NIS+: org_dir i groups_dir. Katalog org_dir sk³ada siê z wszystkich tablic administracyjnych, takich jak passwd, hosts i mail_aliases. Katalog groups_dir sk³ada siê z grup objektów NIS+, które u¿ywane s± do kontroli dostêpu. Kolekcja org_dir, groups_dir i ich katalogów nadrzêdnych to domena NIS+. 55.. PPoorrttmmaappppeerr RRPPCC Aby móc uruchomiæ jakikolwiek z wymienionych poni¿ej programów, bêdziesz musia³ uruchomiæ program /usr/bin/portmap. Niektóre dystrybucje maj± skrypt uruchamiaj±cy ten demon w plikach startowych /sbin/init.d/ czy /etc/rc.d/. Wszystko co musisz zrobiæ, to uaktywniæ go i zrestartowaæ komputer. Przeczytaj dokumenctajê dostarczon± wraz z dystrybucj±, aby siê dowiedzieæ jak to zrobiæ. Portmapper RPC (portmap(8)) jest serwerem, który zamienia numery programowe RPC na numery portów protoko³u TCP/IP (albo UDP/IP). Musi byæ on uruchomiony, aby móc u¿ywaæ na tej maszynie odwo³añ RPC (co w³a¶nie robi oprogramowanie klienta NIS/NIS+) do serwerów RPC (takich jak serwer NIS czy NIS+). Kiedy serwer RPC jest startowany, poinformuje on portmap-a na których portach nas³uchuje, i jakimi numerami programowymi RPC mo¿e s³u¿yæ. Kiedy klient chce odwo³aæ siê przez RPC do danego numeru programowego, najpierw skontaktuje siê z portmap-em na maszynie serwerowej, aby okre¶liæ numer portu, do którego nale¿y wys³aæ pakiety RPC. Normalnie, standardowe serwery RPC s± startowane przez inetd(8), wiêc portmap musi dzia³aæ zanim wystartuje inetd. Dla bezpieczeñstwa portmapper potrzebuje serwisu czasu (Time Service). Upewnij siê czy serwis ten jest w³±czony w /etc/inetd.conf na wszystkich hostach: # # Time service is used for clock syncronization. # time stream tcp nowait nobody /usr/sbin/tcpd in.timed time dgram udp wait nobody /usr/sbin/tcpd in.timed WA¯NE: Nie zapomnij zresetowaæ (kill -HUP) inetd-a po dokonaniu zmian jego pliku konfiguracyjnym ! 66.. CCzzeeggoo ppoottrrzzeebbuujjeesszz,, aabbyy uussttaawwiiææ NNIISS?? 66..11.. SSpprraawwdd¼¼ cczzyy jjeessttee¶¶ sseerrwweerreemm,, sseerrwweerreemm ssllaavvee cczzyy kklliieenntteemm.. Aby odpowiedzieæ na to pytanie musisz rozwa¿yæ dwa przypadki: 1. Twoja maszyna bêdzie czê¶ci± sieci z istniej±cymi serwerami NIS. 2. Nie masz jeszcze ¿adnego serwera NIS w sieci. W pierwszym przypadku potrzebujesz tylko programów klienta (ypbind, ypwhich, ypcat, yppoll, ypmatch). Najwa¿niejszym programem jest ypbind. Program ten musi byæ uruchomiony przez ca³y czas, to znaczy powinien zawsze pojawiaæ siê w li¶cie procesów. Jest to proces-demon i musi byæ startowany z plików startowych systemu (np. /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.local, /etc/rc.d/init.d/ypbind). Jak tylko ypbind jest uruchomiony, twój komputer staje siê klientem NIS. W drugim przypadku, je¶li nie masz serwerów NIS, to bêdziesz tak¿e potrzebowa³ programu serwera NIS (zwykle zwanego ypserv). Sekcja ``Konfiguracja serwera NIS'' opisuje jak ustawiæ serwer NIS na twojej maszynie Linux-owej przy pomocy implementacji "ypserv" Petera Erikssona i Thorstena Kukuka. Zauwa¿, ¿e od wersji 0.14 implementacja ta obs³uguje koncept master- slave omówiony w sekcji 4.1. Jest jeszcze jeden darmowy serwer NIS, zwany "yps", napisany przez Tobiasa Rebera w Niemczech, który obs³uguje koncept master-slave, ale ma inne ograniczenia i nie jest wspierany od d³ugiego czasu. 66..22.. OOpprrooggrraammoowwaanniiee.. Biblioteka systemowa "/usr/lib/libc.a" (wersja 4.4.2 i nowsza) czy biblioteka dzielona "/lib/libc.so.x" zawieraj± wszystkie odwo³ania systemowe niezbêdne do skompilowania oprogramowania klienta i serwera NIS. Do biblioteki glibc 2.x, potrzebujesz tak¿e biblioteki /lib/libnsl.so.1. Niektórzy podawali, ¿e NIS dzia³a tylko z "/usr/lib/libc.a" w wersji 4.5.21 i nowszej, wiêc je¶li chcesz byæ zabezpieczony, to nie u¿ywaj starszych bibliotek. Oprogramowanie klienckie NIS mo¿na znale¼æ w: Adres Katalog Nazwa Pliku 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 ftp.icm.edu.pl /pub/Linux/sunsite/system/network/admin yp-clients-2.2.tar.gz [Od t³umacza: Je¶li jeste¶ w Polsce, to u¿yj raczej tego ostatniego adresu.] Jak ju¿ masz oprogramowanie, postêpuj zgodnie z instrukcjami przychodz±cymi wraz z nim. yp-clients 2.2 nadaje siê do u¿ytku z libc4 i libc5 a¿ do 5.4.20. libc 5.4.21 i glibc 2.x potrzebuj± yp-tools 1.4.1 lub nowsze. Nowe yp-tools 2.0 bêd± dzia³±æ z ka¿d± bibliotek± libc dla Linux-a. Poniewa¿ by³ pewien b³±d w kodzie NIS-a nie powiniene¶ u¿ywaæ libc 5.4.21-35. W zamian u¿yj 5.4.36 lub nowszej, inaczej wiêkszo¶æ programów YP nie bêdzie dzia³a³a. ypbind 3.3 bêdzie dzia³aæ tak¿e ze wszystkimi bibliotekami. Je¶li u¿ywasz gcc 2.8.x lub nowszej wersji, egcs lub glibc 2.x, to powiniene¶ na³o¿yæ ³atê ypbind-3.3-glibc5.diff na ypbind 3.3. Nie powiniene¶ nigdy u¿ywaæ ypbind z yp-clients 2.2. ypbind-mt jest nowym, wielow±tkowym demonem; do dzia³ania potrzebuje j±dra w wersji 2.2 i glibc 2.1 lub nowszej. 66..33.. DDeemmoonn yyppbbiinndd.. Zak³adaj±c, ¿e uda³o ci siê skompilowaæ oprogramowanie jeste¶ gotowy do zainstalowania go. Odpowiednim miejscem dla demona ypbind bêdzie /usr/sbin. Niektórzy mog± ci mówiæ, ¿e nie potrzebujesz ypbind w systemie z NYS. Jest to b³êdne, gdy¿ ypwhich i ypcat potrzebuj± go. Bêdziesz to oczywi¶cie musia³ zrobiæ jako root. Inne programy (ypwhich, ypcat, yppoll, ypmatch) powinny znale¼æ siê w katalogu dostêpnym dla wszystkich u¿ytkowników, zwykle /usr/bin. Nowsze wersje ypbind posiadaj± plik konfiguracyjny - /etc/yp.conf. Mo¿esz tam na sta³e wpisaæ serwer NIS - wiêcej informacji w podrêczniku systemowym - man ypbind(8). Potrzebujesz tego pliku tak¿e do NYS. Przyk³ad: ypserver voyager ypserver defiant ypserver ds9 Je¶li system mo¿e rozwin±æ nazwê bez NIS, to móg³by¶ u¿yæ tej nazwy. W przeciwnym wypadku musisz u¿yæ adresu IP. W ypbind 3.3 jest b³±d; tylko ostatni adres zostanie u¿yty (ds9 w tym przyk³adzie). Wszystkie pozosta³e pozycje zostan± zignorowane. ypbind-mt obs³u¿y to poprawnie i u¿yje tego, który odpowiedzia³ pierwszy. Dobrym pomys³em bêdzie przetestowanie ypbind przed wprowadzeniem go do plików startowych. Aby to zrobiæ postêpuj tak: · Upewnij siê, ¿e masz ustawion± nazwê domeny YP. Je¶li nie, to wydaj polecenie: /bin/domainname domena.nis gdzie domena.nis powinno byæ jakim¶ ³añcuchem zwykle _NIE_ zwi±zanym z DNS-em twojej maszyny! Powodem tego jest, to ¿e zewnêtrznym w³amywac zom jest wtedy trochê trudniej zdobyæ bazê danych z has³ami z twojego serwera NIS. Je¶li nie wiesz jaka jest nazwa domeny NIS w twojej sieci, to zapytaj swojego administratora. · uruchom "/usr/bin/portmap" je¶li nie jest jeszcze uruchomiony. · stwórz katalog "/var/yp" je¶li go nie ma. · uruchom "/usr/bin/ypbind" · u¿yj polecenia "rpcinfo -p localhost", aby sprawdziæ czy ypbind zarejestrowa³ swój serwis u portmapper-a. Co¶ takiego powinno siê pojawiæ na ekranie: program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind lub 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 Zale¿nie od wersji ypbind jakiej u¿ywasz. · mo¿esz tak¿e uruchomiæ "rpcinfo -u localhost ypbind". Polecenie to powinno daæ mniej wiêcej taki wynik: program 100007 version 2 ready and waiting lub program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting Wynik ten zale¿y od wersji ypbind, któr± zainstalowa³e¶. Wa¿n± wiadomo¶ci± jest tutaj tylko "version 2". W tym momencie powiniene¶ móc u¿ywaæ programów klienckich NIS takich jak ypcat itp... Na przyk³ad "ypcat passwd.byname" poda ci ca³± bazê danych NIS z has³ami. WA¯NE: Je¶li pomin±³e¶ test, to upewnij siê, ¿e ustawi³e¶ nazwê domeny i stworzy³e¶ katalog /var/yp Ten katalog MUSI istnieæ, aby ypbind poprawnie siê uruchomi³. Aby sprawdziæ czy nazwa domeny zosta³a ustawiona poprawnie u¿yj programu /bin/ypdomainname z pakietu yp-tools 2.2. U¿ywa on funkcji yp_get_default_domain(), która jest bardziej restrykcyjna. na przyk³ad nie pozwala na domenê "(none)", która jest domy¶ln± w Linux-ie. i stwarza wiele k³opotów. Je¶li test siê powiód³ mo¿esz tera¿ zmodyfikowaæ pliki w skryptach startowych twojego systemu, tak ¿eby ypbind startowa³ podczas startu systemu. Upewnij siê, ¿e nazwa domeny zostanie ustawiona zanim wystartujesz ypbind. Có¿, to wszystko. Zresetuj komputer i obserwuj komunikaty podczas startu, ¿eby zobaczyæ czy ypbind w³a¶ciwie wystartowa³. 66..44.. UUssttaawwiiaanniiee kkiilleennttaa NNIISS pprrzzyy uu¿¿yycciiuu TTrraaddyyccyyjjnneeggoo NNIISS--aa.. Do sprawdzania nazw musisz ustawiæ (albo dodaæ) "nis", do linii kolejno¶ci sprawdzania w pliku /etc/host.conf. Przeczytaj stronê podrêcznika systemowego "resolv+.8", aby dowiedzieæ siê wiêcej szczegó³ów. Na maszynach klienckich dodaj nastêpuj±c± liniê w /etc/passwd: +:::::: Mo¿esz tak¿e u¿yæ znaczków +/-, aby w³±czyæ/wy³±czyæ lub zmieniæ u¿ytkowników. Je¶li chcesz wy³±czyæ u¿ytkownika guest dodaj -guest do swojego pliku /etc/passwd. Chcesz u¿yæ innej pow³oki (np. ksh) dla u¿ytkownika "linux"? Nie ma problemu, po prostu dodaj do swojego /etc/passwd "+linux::::::/bin/ksh" (bez cudzys³owiów). Pola, których nie chcesz zmieniaæ musz± pozostaæ puste. Móg³by¶ tak¿e u¿yæ Netgroups do kontroli u¿ytkowników. Na przyk³ad, aby pozwoliæ tylko miquels, dth, ed i wszystkim cz³onkom grupy sieciowej sysadmin na login, ale ¿eby dane o kontach wszystkich innych u¿ytkowników by³y dostêpne u¿yj: +miquels::::::: +ed::::::: +dth::::::: +@sysadmins::::::: -ftp +:*::::::/etc/NoShell Zauwa¿, ¿e na Linuksie mo¿esz tak¿e zmieniæ pole z has³em, jak to zrobili¶my w tym przyk³adzie. Usunêli¶my tak¿e login "ftp", tak wiêc nie jest on ju¿ znany i anonimowe ftp nie bêdzie dzia³aæ. Netgroup wygl±da³oby tak: sysadmins (-,software,) (-,kukuk,) WA¯NE: Cecha netgroup jest zaimplementowana pocz±wszy od libc 4.5.26. Je¶li masz wersjê biblioteki wcze¶niejsz± ni¿ 4.5.26, ka¿dy u¿ytkownik w bazie danych z has³ami ma dostêp do twojego Linux-a je¶li masz uruchomiony "ypbind". 66..55.. UUssttaawwiiaanniiee kklliieennttaa NNIISS uu¿¿yywwaajj±±cc NNYYSS.. Wszystko co jest potrzebne, to to, ¿eby plik konfiguracyjny (/etc/yp.conf) wskazywa³ na poprawn-y/e serwer(y). Tak¿e plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi byæ poprawnie ustawiony. Powiniene¶ zainstalowaæ ypbind. Nie jest on potrzebny dla libc, ale narzêdzia NIS(YP) go potrzebuj±. Je¶li chcesz u¿ywaæ cechy w³±czania/wy³±czania u¿ytkownika (+/-guest/+@admins), musisz u¿yæ "passwd: compat" i "group: compat" w pliku nsswitch.conf. W tym przypadku musisz u¿yæ "shadow: files nis" ¬ród³a NYS s± czê¶ci± ¼róde³ libc 5. Kiedy uruchamiasz configure, za pierwszym razem odpowiedz "NO" na pytanie "Values correct", potem odpowiedz "YES", na "Build a NYS libc from nys". 66..66.. UUssttaawwiiaanniiee kklliieennttaa NNIISS uu¿¿yywwaajj±±cc gglliibbcc 22..xx Glibc u¿ywa "tradycyjnego NIS", tak wiêc musisz uruchomiæ ypbind. Plik konfiguracyjny Name Service Switch (/etc/nsswitch.conf) musi byæ poprawnie ustawiony. Je¶li u¿ywasz trybu kompatybilnego z passwd, shadow czy group, musisz dodaæ "+" na koñcu tego pliku, i mo¿esz u¿ywaæ cechy w³±czania/wy³±czania u¿ytkownika. Konfiguracja jest dok³adnie taka sama jak pod Solaris-em 2.x. 66..77.. PPlliikk nnsssswwiittcchh..ccoonnff Plik /etc/nsswitch.conf okre¶la kolejno¶æ w jakiej odbywa siê sprawdzanie kiedy pojawi siê ¿±danie pewnej informacji, tak samo jak plik /etc/host.conf, który okre¶la kolejno¶æ sprawdzania adresów hostów. Na przyk³ad linia: hosts: files nis dns okre¶la, ¿e funkcje sprawdzania adresów hostów powinny najpierw szukaæ w lokalnym pliku /etc/hosts, potem w bazie NIS i na koñcu w DNS-ie (/etc/resolv.conf i named), gdzie je¶li nie znaleziono odpowiedzi pojawia siê b³±d. Ten plik musi byæ czytelny dla ka¿dego u¿ytkownika. Wiêcej informacji znajdziesz na stronie podrêcznika systemowego nsswicth.5 lub nsswitch.conf.5. Poprawny plik /etc/nsswitch.conf dla NIS: # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # Pozycja '[NOTFOUND=return]' oznacza, ¿e poszukiwania powinny # zakoñczyæ siê, je¶li poszukiwania w poprzedniej pozycji nic nie # da³y. Zauwa¿, ¿e je¶li poszukiwania nie powiod³y siê z # jakich¶ innych powodów (jak nie odpowiadaj±cy serwer NIS), to # poszukiwania s± kontynuowane z nastêpn± pozycj±. # # Poprawne pozycje to: # # 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 group: compat # Je¶li masz libc5 musisz u¿yæ shadow: files nis 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 passwd_compat, group_compat i shadow_compat s± obs³ugiwane tylko przez glibc 2.x. Je¶li nie ma zasad (rules) shadow w /etc/nsswitch.conf, glibc u¿yje zasady (rule) passwd do sprawdzenia. Jest wiêcej modu³ów szukania dla glibc jak hesoid. Wiêcej informacji znajdziesz w dokumentacji glibc. 66..88.. SShhaaddooww PPaasssswwoorrddss zz NNIISS ii PPAAMM.. Shadow passwords przez NIS to zawsze z³y pomys³. Straci³e¶ ochronê, któr± daje shadow passwords i tylko niewiele bibliotek C ma obs³ugê takiej kombinacji. Dobrym pomys³em na unikniêcie przesy³ania shadow paswords przez NIS jest umie¶ciæ tylko u¿ytkowników lokalnego systemu do pliku /etc/shadow. Usuñ pozycje dotycz±ce u¿ytkowników NIS z bazy shadow i umie¶æ has³o spowrotem w passwd. Tak ¿e mo¿esz u¿ywaæ shadow dla logowania siê jako root i normalnych hase³ dla u¿ytkowników NIS. Ma to tê zaletê, ¿e bêdzie to dzia³a³o z ka¿dym klientem NIS. 66..88..11.. LLiinnuuxx Jedyn± bibliotek± jaka obs³uguja kombinacjê Shadow passwords prze NIS jest libc 2.x. Libc5 nie potrafi tego obs³u¿yæ. Libc5 skompilowana z obs³ug± NYS posiada trochê kodu na ten temat. Jednak kod ten jest miernej warto¶ci i nie dzia³a poprawnie z wszystkimi pozycjami shadow. 66..88..22.. SSoollaarriiss Solaris nie obs³uguje takiej kombinacji w ogóle. 66..88..33.. PPAAMM PAM nie obs³uguje Shadow Passwords przez NIS,a szczególnie pam_pwdb/libpwdb. Jest to powa¿ny problem dla u¿ytkowników RedHat 5.x. Je¶li masz glibc i PAM, to musisz zmieniæ pozycje w plikach /etc/pam.d/*. Zamieñ wszystkie zasady dotycz±ce pam_pwdb na modu³y pam_unix_*. Z powodu b³êdu w module pam_unix_auth.so nie bêdzie on zawsze dzia³a³. Przyk³adowy plik /etc/pam.d/login mo¿e wygl±daæ tak: #%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 Do autoryzacji potrzbujesz modu³u pam_unix_auth.so, do kont pam_unix_acct.so, do hase³ pam_unix_passwd.so a do sesji pam_unix_session.so. 77.. CCzzeeggoo ppoottrrzzeebbuujjeesszz ddoo uussttaawwiieenniiaa NNIISS++?? 77..11.. OOpprrooggrraammoowwaanniiee.. Klient dla NIS+ na Linuxa zosta³ napisany dla biblioteki GNU C 2. Jest tak¿e wersja dla libc5, poniewa¿ wiêkszo¶æ komercyjnych aplikacji jest z ni± skompilowane i nie mo¿na ich przekompilowaæ z bibliotek± glibc. Z bibliotek± t± i NIS+ s± problemy: Nie móg³by¶ do³±czyæ statycznie tej biblioteki do programów i programy skompilowane z t± bibliotek± nie bêd± dzia³a³y z inn±. Musisz ¶ci±gn±æ i skompilowaæ najnowsz± bibliotekê GNU C 2.1 dla platformy Intela albo biblioteki GNU C 2.1.1 dla platform 64-bitowych. Potrzebujesz tak¿e systemu opartego na glibc jak RedHat 5.x, Debian 2.x czy SuSE Linux 6.x. W ka¿dej dystrybucji musisz przekompilowaæ kompilator gcc/g++, libstdc++ i ncurses. W RedHat musisz wiele zmieniæ w konfiguracji PAM. W SuSE 6.0 musisz przekompilowaæ pakiet Shadow Passwords. Oprogramowanie klienckie NIS+ mo¿na pobraæ z: Adres Katalog Nazwa Pliku 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 Dystrybucje oparte na glibc mo¿na ¶ci±gn±æ z: Adres Katalog ftp.redhat.com /pub/redaht/redhat-5.2 ftp.debian.org /pub/debian/dists/stable ftp.icm.edu.pl /pub/Linux/redhat ftp.icm.edu.pl /pub/Linux/debian [Od t³umacza: Je¶li jeste¶ w Polsce, to u¿yj dwóch ostatnich adresów.] Aby skompilowaæ bibliotekê GNU C postêpuj zgodnie z instrukcjami do³±czonymi do niej. Tutaj mo¿esz znale¼æ za³atan± libc5, opart± o ¼ród³a NYS i glibc zamiast standardowej libc5: Adres Katalog Nazwa Pliku ftp.kernel.org /pub/linux/utils/net/NIS+ libc-5.4.44-nsl-0.4.10.tar.gz Powiniene¶ tak¿e zajrzeæ do http://www.suse.de/~kukuk/linux/nisplus.html <http://www.suse.de/~kukuk/linux/nisplus.html>, aby zdobyæ wiêcej informacji i najnowsze ¼ród³a. 77..22.. KKoonnffiigguurraaccjjaa kklliieennttaa NNIISS++.. WA¯NE: Aby ustawiæ klienta NIS+, przeczytaj dokumenctajê do NIS+ na Solaris-a, aby siê dowiedzieæ co zrobiæ po stronie serwera ! Dokument ten opisuje tylko co zrobiæ po stronie klienta ! Po zainstalowaniu nowej biblioteki libc i nis-tools stwórz listy uwierzytelniaj±ce dla nowego klienta na serwerze NIS+. Upewnij siê, ¿e dzia³a portmap. Potem sprawd¼ czy na twoim Linux-ie jest ten sam czas co na serwerze. W bezpiecznym RPC masz tylko 3 minuty, w ci±gu których listy uwierzytelniaj±ce s± aktualne. Dobrym pomys³em jest uruchomienie na wszystkich hostach xntpd. Potem uruchom domainname domena.nisplus nisinit -c -H <serwer NIS+> aby zainicjalizowaæ zimny start file. Przeczytaj stronê podrêcznika systemowego o nisinit i znajd¼ jego opcje. Upewnij siê, ¿e nazwa domeny bêdzie zawsze ustawiona po resecie. Je¶li nie wiesz jaka jest nazwa domeny w twojej sieci, zapytaj administratora. Teraz powiniene¶ zmieniæ swój plik konfiguracyjny /etc/nsswitch.conf. Upewnij siê, ¿e jedynym serwisem po publickey jest nisplus ("publickey: nisplus") i nic wiêcej ! Potem uruchom keyserv i upewnij siê, ¿e zawsze bêdzie startowany jako nastêpy demon po portmaperze podczas startu. Uruchom: keylogin -r aby zapisaæ tajny klucz (secretkey) root-a na twoim systemie. (Mam nadziejê, ¿e doda³e¶ klucz publiczny dla nowego hosta na serwerze NIS+?). "niscat passwd.org_dir" powinno pokazaæ ci teraz wszystkie pozycje w bazie danych z has³ami. 77..33.. NNIISS++,, kkeeyyllooggiinn,, llooggiinn ii PPAAMM.. Kiedy u¿ytkownik siê loguje musi ustawiæ swój tajny klucz dla keyserv- a. Robi siê to przez wywo³anie "keylogin". Login z pakietu shadow zrobi to za u¿ytkownika je¶li zosta³ skompilowany z bibliotek± glibc 2.1. W przypadku login-u PAM musisz zainstalowaæ pam_keylogin-1.2.tar.gz i zmodyfikowaæ plik /etc/pam.d/login, tak aby u¿ywa³ pam_unix_auth, a nie pwdb, które nie obs³uguje NIS+. Na przyk³ad: #%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 77..44.. PPlliikk nnsssswwiittcchh..ccoonnff.. Plik /etc/nsswitch.conf okre¶la kolejno¶æ w jakiej odbywa siê sprawdzanie kiedy pojawi siê ¿±danie pewnej informacji, tak samo jak plik /etc/host.conf, który okre¶la kolejno¶æ sprawdzania adresów hostów. Na przyk³ad linia: hosts: files nis dns okre¶la, ¿e funkcje sprawdzania adresów hostów powinny najpierw szukaæ w lokalnym pliku /etc/hosts, potem w bazie NIS i na koñcu w DNS-ie (/etc/resolv.conf i named), gdzie je¶li nie znaleziono odpowiedzi, to zwracany jest b³±d. Poprawny plik /etc/nsswitch.conf dla NIS: # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # Pozycja '[NOTFOUND=return]' oznacza, ¿e poszukiwania powinny # zakoñczyæ siê, je¶li poszukiwania w poprzedniej pozcyji nic nie # da³y. Zauwa¿, ¿e je¶li poszukiwania nie powiod³y siê z # jakich¶ innych powodów (jak nie odpowiadaj±cy serwer NIS), to # poszukiwania s± kontynuowane z nastêpn± pozycj±. # # Poprawne pozycje to: # # 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 # dla libc5: passwd: files nisplus group: compat # dla libc5: group: files nisplus shadow: compat # dla libc5: 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 [NOTFOUND=return] files automount: files aliases: nisplus [NOTFOUND=return] files 88.. KKoonnffiigguurraaccjjaa sseerrwweerraa NNIISS.. 88..11.. PPrrooggrraamm yyppsseerrvv.. Dokument ten opisuje tylko jak skonfigurowaæ serwer NIS oparty na "ypserv". Oprogramowanie serwera NIS mo¿na znale¼æ na: Adres Katatlog Nazwa pliku ftp.kernel.org /pub/linux/utils/net/NIS ypserv-1.3.6.tar.gz Mo¿esz tak¿e zajrzeæ do http://www.suse.de/~kukuk/linux/nis.html <http://www.suse.de/~kukuk/linux/nis.html> po wiêcej informacji i najnowsze ¼ród³a. Ustawianie serwera jest takie samo dla tradycyjnego NIS i NYS. Skompiluj oprogramowanie, aby wygenerowaæ programy "ypserv" i "makedbm". Mo¿esz skonfigurowaæ program ypserv, aby u¿ywa³ pliku securenets albo tcp_wrappers. Tcp_wrappers sa o wiele bardziej elastyczne, ale wielu ludzi ma z tym powa¿ne k³opoty. A niektóre pliki konfiguracyjne mog± powodowaæ przeciek w pamiêci (?? memory leak: mo¿e autor mia³ na my¶li brak pamiêci ?? - lack of memory). Je¶li masz problemy z ypserv skompilowanym dla tcp_wrappers, to przekompiluj go do u¿ywania pliku securenets. ypserv --version, poka¿e jak± masz wersjê. Je¶li uruchamiasz swój serwer jako g³ówny, okre¶l jakie pliki maj± byæ dostêpne przez NIS i wtedy dodaj lub usuñ odpowiednie pozycje w /var/yp/Makefile. Zawsze powiniene¶ zagl±daæ do plików Makefile i zapoznaæ siê z opcjami na pocz±tku pliku. Pomiêdzy ypserv 1.1 a 1.2 by³a jedna du¿a zmiana. Od wersji 1.2, ypserv "keszuje" uchwyty plików (file handles). Oznacza to, ¿e zawsze kiedy stworzysz now± mapê musisz wywo³aæ makedbm z opcj± -c. Upewnij siê, ¿e u¿ywasz nowego /var/yp/Makefile z ypserv 1.2 lub nowszego, albo dodaj opcjê -c do makedbm w pliku Makefile. Je¶li tego nie zrobisz, ypserv bêdzie wci±¿ u¿ywa³ starych map zamiast uaktualnionych. Teraz zmodyfikuj /var/yp/securenets i /etc/ypserv.conf. Wiêcej informacji na stronach podrêcznika man o ypserv(8) i ypserv.conf(5). Upewnij siê czy portmapper (portmap(8)) jest uruchomiony i uruchom serwer ypserv. Polecenie: % rpcinfo -u localhost ypserv powinno pokazaæ co¶ takiego: program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting Linii z "version 1" mo¿e nie byæ; zale¿nie od wersji ypserv i konfiguracji, której u¿ywasz. Tylko w klientach SunOS 4.x jest to wymagane. Teraz wygeneruj bazê danych NIS (YP). Na serwerze g³ównym uruchom: % /usr/lib/yp/ypinit -m na slave upewnij siê, ¿e dzia³a ypwhich -m. Potem uruchom % /usr/lib/yp/ypinit -s masterhost To wszystko, twój serwer ju¿ dzia³a. Je¶li masz wiêksze problemy, mo¿esz wystartowaæ ypserv i ypbind i trybie ¶ledzenia (debug) w innym oknie. Komunikaty pojawiaj±ce siê w tym trybie powinny ci powiedzieæ co jest nie tak. Je¶li musisz uaktualniæ mapê, to uruchom make w katalogu /var/yp na master serwerze NIS. Uaktualni to mapê je¶li plik ¼ród³owy jest nowszy i prze¶le pliki do serwerów slave. Nie u¿ywaj ypinit do uaktualniania map. Mo¿esz zmodyfikowaæ crontab root-a *na serwerze slave* i dodaæ poni¿sze linie: 20 * * * * /usr/lib/yp/ypxfr_1perhour 40 6 * * * /usr/lib/yp/ypxfr_1perday 55 6,18 * * * /usr/lib/yp/ypxfr_2perday To upewni nas, ¿e mapy NIS s± aktualne, nawet je¶li jakie¶ uaktualnienie zosta³o przeoczone z powodu np. wy³±czenia serwera slave podczas modyfikowania bazy g³ównej. Serwer slave mo¿esz dodaæ kiedykolwiek pó¼niej. Najpierw upewnij siê, ¿e nowy serwer slave ma pozwolenie na kontaktowanie siê z masterem NIS. Potem uruchom % /usr/lib/yp/ypinit -s masterhost na nowym slavie. Na serwerze master dodaj nazwê nowego serwera slave do pliku /var/yp/ypservers uruchom make w </var/yp, aby uaktualniæ mapy. Je¶li chcesz ograniczyæ dostêp do twojego serwera NIS bêdziesz musia³ ustawiæ serwer NIS tak¿e jako klienta przez uruchomienie ypbind i dodanie pozycji + do /etc/passwd _w po³owie_ (halfway) pliku z has³ami. Funkcje biblioteczne zignoruj± wszystkie normalne pozycje po pierwszej pozycji NIS i i resztê informacji zdobêd± przez NIS.W ten sposób obs³ugiwany jest dostêp NIS. Przyk³ad: 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 [ PO tej linii normalni u¿ytkownicy ! ] tester:*:299:10:Just a test account:/tmp: miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh U¿ytkownik tester bêdzie istnia³, ale bêdzie mia³ ustawion± pow³okê na /etc/NoShell. miquels bêdzie mia³ normalny dostêp. Alternatywnie móg³by¶ zmodyfikowaæ plik /var/yp/Makefile i ustawiæ NIS, tak ¿eby u¿ywa³ innego ¼ród³owego pliku z has³ami. W du¿ych systemach NIS-owe pliki z has³ami i grupami znajduj± siê zwykle w /etc/yp/. Je¶li tak zrobisz, to zwyk³e narzêdzia jak passwd, chfn, adduser nie bêd± ju¿ dzia³aæ i bêdziesz potrzebowa³ specjalnych w³asnorêcznie zrobionych wersji. Chocia¿ yppsswd, ypchsh i ypchfn bêd± oczywi¶cie dzia³aæ. 88..22.. PPrrooggrraamm sseerrwweerraa yyppss.. Aby ustawiæ serwer NIS "yps" przeczytaj poprzedni paragraf. Ustawianie serwera "yps" jest podobne, _ale_ nie dok³adnie takie samo, wiêc uwa¿aj jak bêdziesz stosowa³ instrukcje dla "ypserv-a" do "yps" ! "yps" nie jest wspierany przez ¿adnego autora i zawiera parê dziur w bezpieczeñstwie. Na prawdê nie powiniene¶ go u¿ywaæ ! Oprogramowane do serwera NIS "yps" mo¿na znale¼æ na: Adres Katalog Nazwa pliku 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 88..33.. PPrrooggrraamm rrppcc..yyppxxffrrdd Program rpc.ypxfrd s³u¿y do przyspieszania przesy³u bardzo du¿ych map z serwera master na slave. Je¶li serwer NIS slave otrzyma informacje, ¿e jest nowa mapa wystartuje program ypxfr, aby j± pobraæ. ypxfr przeczyta zawarto¶æ mapy z serwera master przy pomocy funkcji yp_all(). Proces ten mo¿e zaj±æ do kilku minut je¶li s± bardzo du¿e mapy, które musz± byæ zapisane przez biblioteki bazy danych. Program rpc.ypxfrd przyspiesza proces pobrania przez pozwolenie serwerowi slave na skopiowanie mapy serwera master zamiast tworzenia jej od nowa. rpc.ypxfrd u¿ywa protoko³u do przesy³u plików na podstawie RPC, tak ¿e nie ma potrzby na tworzenie nowej mapy. rpc.ypxfrd mo¿e byæ uruchomiony przez inetd. Ale poniewa¿ startuje bardzo wolno, powinien byc startowany przez ypserv. Musisz wystartowaæ rpc.ypxfrd tyko na serwerze NIS master. 88..44.. PPrrooggrraamm rrppcc..yyppppaasssswwdddd Kiedy u¿ytkownicy zmieniaj± swoje has³a, baza danych NIS z has³ami i przypuszczalnie inne bazy danych NIS, które zale¿± od bazy danych z has³ami, powinny byæ uaktualnione. Program "rpc.yppasswdd" jest serwerem, który odpowiedzialny jest za zmiany hase³ i uaktualnianie baz danych NIS. rpc.yppasswdd jest zintegrowany z ypserv. Nie potrzebujesz starszych oddzielnych yppasswd-0.9.tar.gz czy yppasswd-0.10.tar.gz i nie powiniene¶ ich ju¿ u¿ywaæ. rpc.yppasswdd z ypserv 1.3.2 ma pe³n± obs³ugê shadow. yppasswd jest teraz czê¶ci± yp- tool-.2.2.tar.gz. Musisz uruchomiæ rpc.yppaswdd tylko na serwerze NIS master. Domy¶lnie u¿ytkownicy nie maj± prawa zmieniaæ swoich "pe³nych nazw" czy pow³oki. Mo¿esz na to pozwoliæ opcj± -e chfn czy -e chsh. Je¶li twoje pliki passwd i shadow nie s± umieszczone w innym katalogu ni¿ /etc, musisz dodaæ opcjê -D. Na przyk³ad je¶li umie¶ci³e¶ wszystkie pliki ¼ród³owe w /etc/yp i chcesz udostêpniæ swoim u¿ytkownikom mo¿liwo¶æ zmiany pow³oki, musisz uruchomiæ rpc.yppasswdd z nastêpuj±cymi parametrami: rpc.yppasswdd -D /etc/yp -e chsh lub rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh Nic wiêcej do zrobienia ju¿ nie zosta³o. Musisz siê tylko upewniæ, ¿e rpc.yppasswdd u¿ywa tych samych plików co /var/yp/Makefile. B³êdy bêd± logowane za pomoc± syslog. 99.. WWeerryyffiikkaaccjjaa iinnssttaallaaccjjii NNIISS//NNYYSS.. Je¶li wszystko jest w porz±dku (jak powinno byæ), powiniene¶ móc zwersyfikowaæ instalacjê kilkoma prostymi poleceniami. Zak³adaj±c na przyk³ad, ¿e twój plik z hs³ami jest dostarczany prze NIS, polecenie % ypcat passwd powinno pokazaæ ci zawarto¶æ pliku z has³ami z NIS. Polecenie % ypmatch userid passwd (gdzie userid jest login-em jakiego¶ u¿ytkownika) powinno pokazaæ ci pozycjê w pliku z has³ami dotycz±c± tego u¿ytkownika. Programy "ypcat" i "ypmatch" powinny byæ zawarte w dystrybucji NIS lub NYS. Je¶li u¿ytkownik nie mo¿e sie zalogowaæ, uruchom nastêpuj±cy program po stronie klienta: #include <stdio.h> #include <pwd.h> #include <sys/types.h> int main(int argc, char *argv[]) { struct passwd *pwd; if(argc != 2) { fprintf(stderr,"Stosowanie: getwpnam nazwa-uzytkownika\n"); exit(1); } pwd=getpwnam(argv[1]); if(pwd != NULL) { printf("name.....: [%s]\n",pwd->pw_name); printf("password.: [%s]\n",pwd->pw_passwd); printf("user id..: [%d]\n", pwd->pw_uid); printf("group id.: [%d]\n",pwd->pw_gid); printf("gecos....: [%s]\n",pwd->pw_gecos); printf("directory: [%s]\n",pwd->pw_dir); printf("shell....: [%s]\n",pwd->pw_shell); } else fprintf(stderr,"Nie znaleziono uzytkownika \"%s\"!\n",argv[1]); exit(0); } Uruchomienie tego programu z u¿ytkownikiem jako parametr, spowoduje wy¶wietlenie wszystkich informacji jakie uzyska funkcja getpwnam dla tego u¿ytkownika. Powinno ci to pokazaæ, która pozycja jest niepoprawna. Najpopularniejszym problemem jest zapisanie "*" w polu has³a. Razem z bibliotek± GNU C 2.1 (glibc 2.1) dostarczane jest narzêdzie getent. U¿yj tego programu zamiast powy¿szego na systemie z t± bibliotek±. Mo¿esz spróbowaæ: getent passwd lub getent passwd login 1100.. PPooppuullaarrnnee pprroobblleemmyy ii rroozzwwii±±zzyywwaanniiee iicchh.. 1. Biblioteki do 4.5.19 s± niepoprawne. NIS nie bêdzie z nimi wspó³pracowa³. 2. Je¶li uaktualnisz biblioteki z 4.5.19 na 4.5.24, to polecenie su nie dzia³a. Potrzebujesz tego polecenia ze Slackware 1.2.0. Przypadkowo tam mo¿esz znale¼æ uaktulanione biblioteki. 3. Kiedy serwer NIS siê wy³±czy i potem uruchomi ponownie ypbind zaczyna wypisywaæ co¶ takiego: yp_match: clnt_call: RPC: Unable to receive; errno = Connection refused i u¿ytkownicy zarejestrowani w bazie danych NIS nie mog± siê zalo gowaæ. Spróbuj zalogowaæ siê jako root i zakoñcz ypbind i uruchom go ponownie. Uaktualnienie do ypbind 3.3 lub nowszego tak¿e powinno pomóc. 4. Po uaktualnieniu libc do wersji nowszej ni¿ 5.4.20, narzêdzia YP nie bêd± dzia³aæ. Potrzebujesz w takim przypadku yp-tools w wersji 1.2 lub nowszej dla libc >= 5.4.21 i glibc 2.x. Dla wcze¶niejszych wersji libc potrzbujesz yp-clients 2.2. yp-tools 2.x powinny dzia³aæ ze wszystkimi bibliotekami. 5. W libc 5.4.21-35 yp_maplist jest popsute, potrzbujesz 5.4.36 lub nowszej wersji, albo niektóre programy z YP jak np. ypwich bêd± przerywaæ dzia³anie z b³êdem _S_e_g_m_e_n_t_a_t_i_o_n _f_a_u_l_t. 6. libc 5 z tradycyjnym NIS nie obs³uguje shadow passwords przez NSI. Potrzebujesz libc5 + NYS lub glibc 2.x 7. ypcat shadow nie pokazuje mapy shadow. Jest to poprawne - nazwa mapy shadow to _s_h_a_d_o_w_._b_y_n_a_m_e a nie _s_h_a_d_o_w. 8. Solaris nie zawsze u¿ywa uprzywilejowanych portów. Wiêc staraj siê nie robiæ nic z has³ami je¶li masz klienta na Solarisie. 1111.. CCzzêêssttoo zzaaddaawwaannee ppyyttaanniiaa.. Na wiêkszo¶æ twoich pytañ powiniene¶ ju¿ uzyskaæ odpowied¼. Je¶li wci±¿ masz jakie¶ pytania bez odpowiedzi to mo¿esz wys³aæ list na grupê comp.os.linux.networking albo na któr±¶ z polskich grup pl.comp.security lub pl.comp.os.linux lub pl.comp.os.linux.siec(i) Albo skontaktuj siê z którym¶ z autorów tego HOWTO.