Rajmund Radziewicz
NIS (Network Information Service), czyli usługa informacji sieciowej — jest uniksową usługą udostępniania komputerom w sieci takich informacji, jak loginy, hasła, klucze, czy np. dane o grupach.
Jest doskonałym sposobem na scentarlizowane zarzadządzanie użytkownikami i katalogami domowymi. Sprawdza się w przypadkach — kiedy mamy dużą ilość kont (lub planujemy mieć dużą) i chcielibyśmy zakładać/kasować te konta tylko na jednym komputerze. Oczywiście logować się na nie użytkownicy będą mogli z dowolnego hosta.
NIS jest ściśle powiązany z NFSem, który posłuży nam tutaj do eksportowania katalogów domowych z serwera.
Rozwiązanie jakie postaram się przybliżyć, z pewnością może okazać się przydatne w szkolnej sieci, gdzie z jednej pracowni komputerowej może korzystać przykładowo kilkaset osób. W momencie kiedy administrator chce, aby każda z takich osób miała swoje unikalne konto – NIS jest tym, co znacznie ułatwi mu życie.
Żeby działał NIS, w sieci musi być komputer pełniący rolę tzw. nadrzędnego serwera NIS (podrzędne – zapasowe, nie są konieczne. Posiadają one tylko kopię baz danych NIS i otrzymują te kopie od nadrzednego serwera tylko wtedy, kiedy robione są jakieś zmiany w głównej bazie. Przydatne stają się przy bardzo dużych sieciach, o zastosowaniach krytycznych, gdzie niezwykle ważna jest bezawaryjność).
Bazy danych NIS przechowywane są w tak zwanym formacie DBM. Jest to format dużo bardziej zoptymalizowany pod kątem odczytu — niż zwykły plik tekstowy. W bazach tych są właśnie informacje na temat kont, czy grup i są one udostępniane klientom przez nadrzędny serwer NIS. Takie eksportowane bazy określa sie jako mapy (maps).
Zacznijmy więc od konfiguracji klienta. W naszym przypadku klient to komputer o nazwie ‘Linux-EduCD’ i adresie ip: 192.168.0.11. Serwer to komputer o nazwie ‘educd-serv’ i ip: 192.168.0.1
Na kliencie powinny być uruchomione dwa demony – ypbind, zajmujący się obsługą żądań, oraz ypwhich – który odpowiada za lokalizacje nadrzednego serwera NIS. Ponadto wymagany jest działajacy demon portmap. Zanim to wszystko uruchomimy, musimy jednak ustawić wcześniej kilka rzeczy.
Poleceniem “domainname” ustawiamy na kliencie nazwę naszej domeny NIS. Jest to coś zupełnie innego niż “typowa” nazwa domeny, czy np. dns. Działa tylko na potrzeby NISa i powinna różnić się od nazwy dns-owej.
Powiedzmy, że nasza domena będzie się nazywała “Knoppixdomain”. Jako użytkownik root, ustawiamy więc tę nazwę, wpisując w terminalu:
domainname Knoppixdomain
Żeby nazwa domeny była ustawiana przy każdym starcie komputera, należy ją umieścić w pliku /etc/defaultdomain (skasujmy tę, która już tam jest). Nie powinna być to również nazwa tożsama z nazwą hosta.
Następnie w /etc/yp.conf (główny plik konfiguracyjny demona ypbind) umieszczamy tę nazwę + nazwę serwera NIS:
domain Knoppixdomain server educd-serv
Następnie (WAŻNE) należy umieścić również odpowiedni wpis w /etc/hosts razem z numerem ip:
192.168.0.1 educd-serv
ypserver educd-serv
Istotne jest teraz, żeby ustawić zakres informacji, jakie będą przekazywane
w ramach usług NIS. Zakres ten jest zdefiniowany w pliku /etc/nsswitch.conf
W /etc/nsswitch.conf powinno się zatem znaleźć:
passwd: compat
group: compat
shadow: compat
netgroup: nis
Oraz przy dyrektywie “hosts” wpis:
hosts: files dns nis
Ważny jest wpis ‘dns’ przy “hosts” na drugim miejscu. Bez niego nie będą działały serwery nazw ustawione w /etc/resolv.conf na klientach!
Teraz konieczna będzie modyfikacja plików z hasłami i grupami. W /etc/passwd dodajemy na końcu pliku
linijke:
+::::::
Możemy także użyć znaczków +/-, aby włączyć/wyłączyć lub zmienić użytkowników, korzysatjących z NIS.
Przykładowo:
+rajmund::::::
+moodle::::::
+wujek_franek::::::
Jeśli używasz pliku /etc/shadow, taki wpis musi się znaleźć również tam.
Do /etc/group dodajemy natomisat:
+:::
Wystartujemy teraz usługę NIS i portmappera (jeśli pamiętasz definicję portmapa z artykułu o NFS, to jest on serwerem, który zamienia numery programowe RPC na numery portów protokołu TCP/IP . Musi być uruchomiony, aby działało oprogramowanie klienta NIS):
cd /etc/init.d
./nis start
./portmap start
Możesz sprawdzic, czy klient komnikuje się z serwerem przez wpisanie:
ypwhich educd-serv
Ustawiamy teraz serwer NIS
W /etc/hosts dopisujemy:
192.168.0.1 educd-serv educd-serv
192.168.0.11 Linux-EduCD
W /etc/defaultdomain ustawiamy znaną już nazwę domeny (w sposób analogiczny, jak na kliencie).
Teraz powinniśmyy w /etc/init.d/nis ustawić następującą wartość, przy NISSERVER:
NISSERVER=master
Ustawiamy teraz taką samą opcję w /etc/default/nis
Teraz przyszła kolej na edycję pliku /etc/ypserv.securenets. Jego zawartość określa, które
komputery w sieci będą miały dostęp do map serwera nisowego. Domyślnie jest tam wpis,
mówiący, że każdy komputer, który może połączyć się z serwem nadrzędnym — ma do nich dostęp
i może korzystać z usług NIS. Zakres można ustawić podając kombinację maski i adresu sieci, np:
255.0.0.0 127.0.0.0
To powyżej, pozwoli na dostęp wyłącznie z adresu localhost. Możemy więc ustawić tu wartość:
255.0.0.0 192.168.0.0
Jako że na serwerze najważniejsze jest ustawienie zawartości naszej eksportowane bazy danych (mapy), zajrzyjmy jeszcze do jej definicji w /var/yp/Makefile
Upewnijmy się, że w /var/yp/Makefile, jest odkomentowana linia z wpisami:
ALL = passwd group hosts rpc services netid protocols netgrp shadow
(istotny jest ’shadow’, jeśli go nie ma — należy dopisać).
oraz że opcje:
‘MERGE_PASSWD’ i ‘MERGE_GROUP’ ustawione są na ‘true’.
Opcje ‘MINUID’ (minimalne id klienta) ustawiliśmy na ‘100′ Niżej są już konta admninistracyjne, więc nie będzie to zbyt zalecane.
Teraz tylko:
cd /etc/init.d
./nis stop
./nis start
./portmap start
Na koniec musimy wygenerować mapę, żeby mogła być “widoczna” w domenie NIS. Wykonujemy polecenie:
/usr/lib/yp/ypinit -m
W tym momencie mamy już scentarlizowane zarządzanie kontami. Pozostaje nam tak
skonfigurować NFS, żeby można było udostępniać katalogi domowe z serwera.
Na serwerze startujemy tylko odpowiednie usługi. Katalog /home już jest
udostępniony w /etc/exports (sprawiła to domyślna konfiguracja LTSP, jaką zapewne
mamy w Linux-EduCD po instalacji). Więc:
cd /etc/init.d
./nfs-kernel-server start
rpc.mountd && rpc.nfsd
Na kliencie natomiast montujemy katalog /home z serwera – w miejsce oryginalnego /home
(nam zależy na możliwości zakładania kont wyłącznie z serwera NIS):
mount -t nfs 192.168.0.1:/home /home
Teraz (KONIECZNIE) musimy dopisać polecenie montowania do skryptów startowych (najlepiej w pliku umieszczonym w /etc/init.d klienta i z dowiązaniem do niego w /etc/rcS.d)
Odpowiednio inne wpisy powinny się także znaleźć w skryptach startowych serwera (naszego educd-serv z ip: 192.168.0.1). Wystarczy jak w /etc/init.d umieścimy mały skrypcik (np. startuj_nis) o zawartości:
——–
#!bin/bash
cd /etc/init.d ; ./nfs-kernel-server start
rpc.mountd && rpc.nfsd
./nis start
———-
Należy pamietać także o dowiązaniu w /etc/rcS.d:
cd /etc/rcS.d/
ln -s /etc/init.d/startuj_nis S40cokolwiek
Pamiętajmy również, że po każdorazowym dodaniu konta na serwerze, zanim zalogujemy się na klienta, należy zrestartować nisa i wykonać:
/usr/lib/yp/ypinit -m
Teraz wystarczy na serwerze założyć dowolną liczbę kont (np. za pomocą adduser), wywołać:
cd /etc/init.d ; ./nis restart
/usr/lib/yp/ypinit -m
… i możemy logować się na nie z komputera o adresie 192.168.0.11