25 июл. 2012 г.

Установка сервера NIS в Debian Linux и настройка клиентов

NIS очень прикольная штука. Она позволяет авторизоваться на всех машинах, где есть её клиент с помощью учетных данных локальных пользователей на сервере. Ну т. е. если мы поменяем пароль на свою учетку, то все клиенты автоматом подтянут изменения. Да и просто удобно.

Итак, установим нужные пакеты и их зависимости командой:

aptitude -y install nis portmap

Когда спросит, введем имя нашего домена - например, example.com
Автостарт службы сфейлиться, но не пугайтесь - ему просто не хватает некоторых настроек.
Займемся конфигурацией.

1) nano /etc/default/nis

Здесь прописываем: 

NISSERVER=master

2) nano /etc/ypserv.securenets

Здесь закомментируем строчку, разрешающую доступ со всех IP:
# This line gives access to everybody. PLEASE ADJUST!
# make it comment
# 0.0.0.0 0.0.0.0

И пропишем адреса наших подсетей, например:
255.255.255.0                    10.86.35.0

3) nano /var/yp/Makefile

В 119-й линии добавим shadow:
ALL = passwd shadow group hosts rpc services netid protocols netgrp

4) nano /etc/hosts 

Добавим адрес нашего сервера NIS:
127.0.0.1 localhost nis.example.com nis
#Добавим также сетевой адрес сервера
10.86.35.10 nis.example.com nis

5) Обновим базу данных NIS сервера командой (введя на запрос имя нашего nis сервера как мы его прописали чуть выше - nis):

/usr/lib/yp/ypinit -m


Вывод команды:

At this point, we have to construct a list of the hosts which will run NIS
servers. master 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 <control D>
. next host to add: nis
next host to add:
# push Ctrl+D
The current list of NIS servers looks like this:

localhost
nis

Is this correct? [y/n: y]
y
We need a few minutes to build the databases...
Building /var/yp/server.world/ypservers...
gethostbyname(): Success
Running /var/yp/Makefile...
make[1]: Entering directory `/var/yp/server.world'
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.bygid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating shadow.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byaddr...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating rpc.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating rpc.bynumber...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating services.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating services.byservicename...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netid.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating protocols.bynumber...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating protocols.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup.byhost...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup.byuser...
failed to send 'clear' to local ypserv: RPC: Program not registeredmake[1]: Leaving directory `/var/yp/server.world'

master has been set up as a NIS master server.

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

6) Запускаем демона NIS

/etc/init.d/nis start
Starting NIS services: ypserv yppasswdd ypxfrd ypbind.

7) Необходимо проапдейтить базу NIS:

cd /var/yp
make

Настройка клиентов NIS:


1) Установка:

aptitude -y install nis portmap
2) Конфигурация NIS Client - подредактируем несколько конфигов
nano /etc/yp.conf

# add at the last: (domain name) (server) (NIS server's hostname)
domain example.com server nis.example.com

nano /etc/nsswitch.conf

passwd:      compat nis

group:          compat nis
shadow:         compat nis

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 nis
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

nano /etc/pam.d/common-session

Добавляем в конец для автоматического создания домашних директорий:

session optional pam_mkhomedir.so skel=/etc/skel umask=077

 /etc/init.d/nis restart

Всё. Можем заходить с помощью логина из NIS сервера.
Несколько полезных команд:

ypwhich - показывает адрес NIS-сервера
ypcat passwd  - показывает пользователей NIS-сервера
ypcat hosts - показывает список хостов