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, aby zdobyć więcej informacji i najnowsze źródła.
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.
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
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