NIS

Na Red Hatu je potřeba mít nainstalovaný balíček „ypserv“ a „nis-utils“:

yum -y install ypserv nis-utils

Nastavení je v souboru /etc/ypserv.conf, ale já osobně jsem v něm nemusel změnit ani řádek.
Dále je potřeba nastavit NIS-doménu, ta je v Red Hatu v /etc/sysconfig/network;
přidejte řádek NISDOMAIN:

cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=server.mojedomena.cz
GATEWAY=192.168.1.1
NISDOMAIN=mojedomena.cz

Pak ještě do /var/yp/ypservers dejte celé hostname NIS serveru:

cat /var/yp/ypservers

server.mojedomena.cz

Nakonec ve /var/yp/Makefile nastavte proměnnou ALIASES podle toho,
jaký používáte poštovní server, a kde máte soubor aliases.
V mém případě /etc/postfix/aliases. Je také možné použít symlink /etc/alises.

Nyní můžeme provést sestavení NIS databáze:

/usr/lib/yp/ypinit -m

Nebo na 64bitovém stroji:

/usr/lib64/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  server.mojedomena.cz is in the list of NIS server hosts.  
Please continue to add the names for the other hosts, one per line. 
When you are done with the list, type a .
next host to add:  server.mojedomena.cz
next host to add: 
The current list of NIS servers looks like this:

server.mojedomena.cz

Is this correct?  [y/n: y]  y
We need a few minutes to build the databases…
Building /var/yp/mojedomena.cz/ypservers…
Running /var/yp/Makefile…
gmake[1]: Entering directory `/var/yp/mojedomena.cz‘
Updating passwd.byname…
Updating passwd.byuid…
Updating group.byname…
Updating group.bygid…
Updating hosts.byname…
Updating hosts.byaddr…
Updating rpc.byname…
Updating rpc.bynumber…
Updating services.byname…
Updating services.byservicename…
Updating netid.byname…
Updating protocols.bynumber…
Updating protocols.byname…
Updating mail.aliases…
gmake[1]: Leaving directory `/var/yp/mojedomena.cz‘

server.mojedomena.cz has been set up as a NIS master server.

Now you can run ypinit -s server.mojedomena.cz on all slave server.

Zkusíme ještě updatovat NIS databázi.
Tento update je nutný pro promítnutí změn z lokálních souborů (/etc/passwd, …) do NIS databáze.

cd /var/yp/

mkdir mojedomena.cz

(možná, že adresář již existuje)

make
gmake[1]: Entering directory `/var/yp/mojedomena.cz‘
Updating passwd.byname…
Updating passwd.byuid…
Updating group.byname…
Updating group.bygid…
Updating netid.byname…
gmake[1]: Leaving directory `/var/yp/mojedomena.cz‘

Pokud vše dobře dopadne, nastavte, aby se služby ypserv a yppasswd spouštěly při startu.
Yppasswd slouží ke změnám hesla ze stanice.
Změna hesla ze stanice se vlastně provádí síťově a právě démon yppasswd to obhospodařuje na serveru.
 

Nastavení NIS na stanici

Na stanici je potřeba nainstalovat balíček „yp-tools“. Nastavení je v několika souborech:

cat /etc/defaultdomain
mojedomena.cz

a

cat /etc/yp.conf

domain mojedomena.cz server 192.168.1.1

V této souvislosti je dobré přečíst si defaultní komentáře a upravit soubor podle potřeby.

Nyní je třeba zavést klienta do NIS domény pomocí příkazu

domainname mojedomena.cz

a zkontrolujeme v /etc/sysconfig/network, zda je tam uvedeno

NISDOMAIN=mojedomena.cz

Data z NIS serveru pak připojíme takto:

service ypbind start

Interně se spouští program ypbind.

Funkčnost NISu ověríme takto:

ypcat passwd.byname

Začne se vypisovat soubor passwd, který je na serveru. Všimněte si,
že je jednak seřazený jinak než originál, a zadruhé jsou uvnitř i kryptovaná hesla.
NIS vznikl původně na Solarisu, dávno před vznikem nějakého /etc/shadow.
V how-to se dokonce doporučuje na serveru stínová hesla zrušit,
nicméně v mém případě to nečinilo sebemenší potíže.

O démonu yppasswd jsme již mluvili.
Síťovou změnu hesel na straně klienta zajišťuje nečekaně program yppasswd.
Doporučuje se nahradit jím stávající passwd, práce je s ním identická.

mv /usr/bin/passwd /usr/bin/passwd.old
ln /usr/bin/yppasswd /usr/bin/passwd -s

Dále je potřeba nastavit soubor /etc/nsswitch.conf.
Tam se definuje, která data půjdou z lokálu, a která z NIS serveru.
Obsah tohoto souboru je v mém případě následující:

cat /etc/nsswitch.conf   passwd:     nis files  shadow:     nis files  group:      nis files  hosts:      files dns nis  services:   files nis  networks:   files nis  protocols:  files nis  rpc:        files nis  ethers:     files nis  netmasks:   files nis  bootparams: files nis  netgroup:   files nis 
publickey:  files nis  automount:  files nis  aliases:    files nis

A jako poslední věc doplníme do /etc/passwd a /etc/group
virtuální uživatele a skupiny z NISu. Některé řádky jsem vynechal,
ale jedná se o zcela standardní soubory ze standardní instalace, jediný rozdíl je v posledním řádku.
Záznamy, které jsou v těchto souborech, mají zřejmě vyšší prioritu než data z NISu;
minimálně root má stále heslo z lokálu a ne ze serveru.

cat /etc/passwd

root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:


sshd:x:33:33:sshd:/:
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
pop:x:90:90:POP:/:
nobody:x:99:99:nobody:/:
+::::::

a

cat /etc/group

root::0:root
bin::1:root,bin,daemon
daemon::2:root,bin,daemon


nobody::98:nobody
nogroup::99:
users::100:
console::101:
+:::

Nyní zkuste restartovat počítač a přihlásit se jako nějaký uživatel, který je na serveru.
Pokud to jde, můžete si pogratulovat. Zkuste ještě, jestli funguje změna hesla, a hotovo.

Více o NIS lze najít na http://www.linux-nis.org/ a v The Linux NIS(YP)/NYS/NIS+ HOWTO.

NIS