Учебно-методические материалы для студентов кафедры АСОИУ

Службы каталогов. Развертывание NIS

Сервис Network Information System (NIS) - служба каталогов, ориентированная на использование в изолированных сетях под управлением UNIX/Linux систем.

Цель работы: Использование Network Information System (NIS) для централизованного управления разделяемыми ресурсами локальной сети.

Задания для выполнения

  1. Проверьте доступность узлов tester.asoiu, hackme.asoiu, repo.asoiu.
  2. Проверьте наличие portmap. Если не установлен - установите.
  3. Установите пакеты ypbind и yp-tools (устанавливается совместно с ypbind)
  4. Сконфигурируйте и запустите демон ypbind. Выясните, какие порты используют программы portmapper и ypbind в сконфигурированной вами системе.
  5. Установите ypbind как сервис на 3 и 5 уровнях запуска.
  6. Просмотрите ресурсы карты passwd (обратите внимание на пути к домашнему каталогу). Сколько пользователей зарегистрированы в NIS? Какой минимальный идентификатор пользователя (UID)?
  7. Перезагрузите компьютер и выполните вход в систему под одной из учетных записей пользователей NIS (в учебных целях пароли совпадают с логинами). Объясните причины появления ошибок (если они возникли) при входе пользователя.
  8. Получите список карт ресурсов NIS, представляемых сервером nis.asoiu.
  9. Просмотрите ресурсы карты hosts. Какие сетевые имена у узла с адресом 194.188.210.199?
  10. Проверьте доступность узлов (по именам), перечисленных в карте hosts. Сравните результаты с результатами, полученными в п.1.
  11. Используйте команду yppaswd для изменения полного имени (не логина), дополнительной информации (GECOS) и пароля текущего пользователя (см. man yppasswd).
  12. Используйте команду finger для получения развернутых сведений о пользователях сети (см. man finger).
  13. ОБЯЗАТЕЛЬНО! Верните все сделанные в ходе лабораторной работы изменения системы к исходным, в т.ч. удалите ypbind, yp-tools и finger.
  14. Составьте отчет о выполнении работы.

Указания к лабораторной работе

Назначение, функции и принципы работы NIS приведены в этой лекции. Лабораторная работа не предусматривает установку и настройку серверной части NIS. Это означает, что в сети должен быть хотя бы один действующий NIS-сервер, информацию о котором представляет преподаватель.

ВНИМАНИЕ: в текущей сети NIS-сервер работает на хосте с адресом 194.188.210.254. Имя сервера — nis.asoiu.

Для настройки системы в качестве клиента NIS необходимо войти в систему с правами суперпользователя (или использовать su/sudo).

Для начала необходимо проверить, что необходимое ПО установлено или может быть установлено. Для этого нужно использовать программу управления пакетами, соответствующую вашей системе. Так, для дистрибутивов Linux на основе RedHat packet manager (.rpm) можно использовать команду вида:

rpm -q <имя-пакета>

Например:

root@edu.asoiu # rpm -q portmap
portmap-6.0+git20070716-38.1 <—результат выполнения

Установить программы portmaper, ypbind и yp-tools (набор пользовательских программ NIS: ypwhich, ypcat, yppasswd, yppoll, ypmatch) можно с помощью того же rpm:

rpm -ivh <имя-файла-пакета.rpm>

Однако удобнее выполнять установку из программ типа yum, zypper, yast или synaptic. Пример установки для OpenSuSE (подразумевается, что репозитории ПО настроены и подключены):

root@edu.asoiu # zypper install ypbind
Чтение установленных пакетов...
Будет установлен следующий НОВЫЙ пакет:
  ypbind
Полный размер загрузки: 39,0 K. После этой операции будет использовано дополнительно 72,0 K.
Продолжить? [да/нет]: yes
Загружается пакет ypbind-1.21-16.1.i586 (1/1), 39,0 K (72,0 K нераспакованный)
Загружается: ypbind-1.21-16.1.i586.rpm [готово]
Устанавливается: ypbind-1.21-16.1 [готово]

Проверить, что демон portmap установлен и запущен можно командой rpcinfo:

rpcinfo -p localhost

Если portmap не установлен в системе, его необходимо установить (в обычном порядке), а затем запустить как системный сервис. Это можно сделать например так (rpm-based дистрибутивы):

root@edu.asoiu # service portmap start
Starting RPC portmap daemon done

Аналогичным образом запускается и клиентская служба NIS - демон ypbind. Но прежде чем запускать его, нужно выполнить базовую настройку. Это сводится к правке конфигурационного файла (/etc/yp.conf), файлов passwd, nsswitch.conf и других (в зависимости от требуемой конфигурации NIS). Кроме того, до запуска ypbind, необходимо указать имя домена NIS.

В файл настроек /etc/yp.conf нужно ip-адреса серверов NIS. Пример:

ypserver 192.168.0.1

Если в сети имеется сервис DNS и система может получить имена серверов (отрезолвить) без использования NIS, то в yp.conf можно использовать доменное имя, иначе - придется использовать ip-адрес.

По умолчанию вся информация о доступных клиенту сервисах NIS размещается в каталоге /var/yp. Если он не существует, то нужно создать его.

Следующий шаг - указание домена, к которому будет принадлежать клиентский хост. Это выполняется командой domainname, например так:

domainname <nis.domain>

где nis.domain - имя существующего в сети NIS-домена (в нашем случае - nis.asoiu). В целях обеспечения безопасности это имя должно отличаться от DNS-имени сервера NIS.

Теперь можно запускать ypbind в качестве сервиса:

root@edu.asoiu # service ypbind start

Для проверки того, что ypbind работает можно использовать команду rpcinfo (см. выше) или, например, service:

root@edu.asoiu # service --status-all | grep ypbind
...
Checking for NIS client program: ..running

Если будет выведено нечто подобное, значит установка и начальная настройка клиента NIS прошли успешно и можно использовать клиентские программы NIS, таких как ypcat, ypwhich и т.д.

Для автоматического запуска демонов portmap и ypbind стоит добавить их в автозагрузку. Это можно сделать например так:

## установить запуск ypbind на 3 и 5 уровнях (runlevel's) 
root@edu.asoiu # chkconfig -s ypbind 35

Использование NIS

Для просмотра ресурсов NIS предназначена программа ypcat. Программа позволяет просмотреть как список доступных карт, так и ресурсы указанной карты. Имя карты может быть задано как полное, так и сокращенное (alias). Примеры использования ypcat:

root@edu.asoiu # ypcat -x <— получение списка карт
Use "ethers"	for map "ethers.byname"
Use "aliases"	for map "mail.aliases"
Use "services"	for map "services.byname"
Use "protocols"	for map "protocols.bynumber"
Use "hosts"	for map "hosts.byname"
Use "networks"	for map "networks.byaddr"
Use "group"	for map "group.byname"
Use "passwd"	for map "passwd.byname"
root@edu.asoiu # ypcat hosts <— ресурсы карты hosts
194.188.210.254	edu.asoiu
194.188.210.199 tester.asoiu tester
127.0.0.1 localhost
194.188.210.199 tester.asoiu tester
194.188.210.199 hackme.asoiu

Для получения имени сервера NIS предназначена программа ypwhich.

root@edu.asoiu # ypwhich
tester.asoiu

Программа yppoll возвращает версию карты и имя мастер-сервера NIS, представившего эту карту.

root@edu.asoiu # yppoll hosts.byname
Domain nis.asoiu is supported.
Map hosts.byname has order number 1254796444. [Tue Oct 6 09:34:04 2009]
The master server is tester.asoiu.

Команда ypmatch выдает значения одного или более ключей из карты NIS.

root@edu.asoiu # ypmatch nisuser passwd
nisuser:hsB.xq3nXoULk:1002:100:lexa:/home/nisuser:/bin/bash

За более подробной информацией по каждой утилите обратитесь к соответствующим man-страницам.

Файл /etc/nsswitch.conf указывает системе, где она должна искать требуемую информацию, например, имена хостов и логины пользователей. Можно использовать этот файл для управления порядком (или приоритетом), в котором просматриваются базы данных и обрабатываются ошибки.

Примерное содержание файла /etc/nsswitch.conf для NIS может быть таким:

#
# /etc/nsswitch.conf sample
passwd: nis files
group: nis files
shadow: nis files
hosts: nis files dns
networks: nis [NOTFOUND=return] files
netmasks: nis [NOTFOUND=return] files
services: nis [NOTFOUND=return] files
protocols: nis [NOTFOUND=return] files
rpc: nis [NOTFOUND=return] files
ethers: nis [NOTFOUND=return] files
netgroup: nis
bootparams: nis [NOTFOUND=return] files
publickey: nis [NOTFOUND=return] files
automount: files
aliases: nis [NOTFOUND=return] files

Для управления пользователями, которым разрешен вход на клиентскую машину нужно отредактировать файл /etc/passwd. Например, для разрешения входа всем пользователям следует добавить такую строчку:

+::::::

Символы "+" и "-" соответственно разрешают или блокируют пользователей. Здесь же можно изменить пользовательскую оболочку и прочую информацию о пользователях. Поля, которые не нужно изменять должны оставаться пустыми.

Например, для того, чтобы разрешить вход в систему только пользователям miquel, alex и ed, и всем членам сетевой группы sysadmin, но при этом чтобы была доступна информация о всех других пользователях, passwd нужно изменить так:

+miquel:::::::
+alex:::::::
+ed:::::::/bin/sh <—для этого пользователя оболочкой будет sh, а не bash
+@sysadmins::::::: <—разрешаем вход пользователям из группы sysadmins
-ftp <—запрещаем вход для этого пользователя
+:*::::::/etc/NoShell <—отключаем оболочку для всех прочих пользователей

В указанном примере определена cетевая группа (sysadmins). Информация о ней должна быть занесена в файл /etc/netgroup (см. комментарии в файле /etc/netgroup). Пример описания сетевой группы:

sysadmins (-,software,) (-,mazzy,) (-,got,)

При настройке параметров входа надо соблюдать осторожность. Если сделан доступным администраторский пароль и логин, как и логин/пароль других пользователей, то не следует использовать при неудачном поиске пары значений логин/пароль опцию 'return' (см. man nsswitch.conf). Подобная конфигурация блокирует вход всем пользователям (в т.ч. и суперпользователю), чьи учетные записи не входят в NIS.

Контрольные вопросы

  1. Какие карты ресурсов доступны и имеют отображения в домене сервера nis.asoiu?
  2. О каких пользователях можно изменить информацию с помощью команды ypasswd?

CC-BY-CA Анатольев А.Г., 17.10.2013