NIS (Network Information Service, информационная служба сети) — клиент-серверный протокол, созданный Sun Microsystems и обеспечивающий доступ к системной конфигурации по всей сети. В домене NIS (группе компьютеров со своими пользователями и группами) существуют один главный и несколько подчиненных серверов, но клиенты не различают главный и подчиненный серверы.
Протокол используется для того, чтобы сделать конфигурационную информацию доступной для определенной группы компьютеров.
Если в сети присутствуют разные ОС, в каждом ее сегменте должен быть хотя бы один сервер NIS, чтобы клиенты могли отправить ему широковещательный запрос. Если же вся сеть построена на Solaris, такое условие не является необходимым.
В пределах домена NIS могут быть выделены сетевые группы, логически объединяющие определенные компьютеры и пользователей и описываемые файлом /etc/netgroup. Этот файл является общедоступным в сети NIS, как /etc/passwd и /etc/group.
Но передача таких данных открытым текстом являлась бы существенной уязвимостью (так было в первых версиях NIS), поэтому информация о компьютерах, пользователях, группах, сетевых группах и т.п. преобразуется из соответствующих файлов в карты NIS. Карта NIS – это хэшированная база данных, используемая сервером NIS для ответа на запросы клиентов.
Такое преобразование осуществляется программой ypmake при наличии Makefile в каталоге /var/yp, поскольку программа вызывает этот файл (в момент создания NIS носила название Sun Yellow Pages, потом название пришлось изменить из-за судебных преследований владельцев торговой марки, но на именовании программ это не отразилось). Программа ypmake не изменяет исходный файл, а генерирует на его основе новую карту NIS.
Если поиск в карте нужно будет производить по нескольким ключам, потребуется создать несколько карт, потому что хэширование базы данных можно осуществить только по одному ключу (например, passwd.byname и passwd.byuid).
Запуск сервисов NIS осуществляется командой /usr/lib/netsvc/yp/ypstart, а остановка – командой /usr/lib/netsvc/yp/ypstop.
Если команда domainname сообщает, что компьютер не входит в домен NIS, ввести компьютер в домен можно командой "domainname имя домена NIS" (если настраивается сервер, потребуется выполнить команду ypinit –m для инициализации домена NIS и создания всех необходимых карт), затем проверить его наличие в домене и создать при необходимости файл /etc/defaultdomain и каталог /var/yp/binding/имя домена NIS.
Для запрещения загрузки служб NIS при загрузке системы достаточно удалить файл /etc/defaultdomain.
Если для поиска адресов в сети будет использоваться DNS, а не NIS, нужно исправить строку, определяющую порядок использования служб имен для поиска адресов, в /etc/nsswitch.conf, чтобы dns предшествовало nis:
hosts: dns nis files
Формат записей в файле /etc/netgroup:
имя группы список участников
В качестве списка участников принимаются имена членов группы, разделенные пробелами. Член группы – имя другой сетевой группы или запись вида
(имя компьютера, имя пользователя, имя домена NIS)
Отсутствие одного или нескольких компонентов означает, что в соответствующей позиции подразумевается любой компонент.
Один компьютер может входить в несколько доменов NIS.
Информация о доменах NIS хранится на сервере в подкаталогах каталога /var/yp. На главном сервере NIS должны быть запущены процессы ypserv (он отвечает на запросы клиентов), ypxfrd (обслуживает запросы от подчиненных серверов NIS для копирования информации), yppasswdd (демон изменения пароля пользователя).
В Solaris компьютер автоматически настроится на работу с NIS, если будет найден файл /etc/defaultdomain. Программа ypstart при запуске системы проверяет, установлено ли имя домена в этом файле.
Демон ypserv запускается автоматически, если указано имя домена, существует каталог /var/yp/имя домена, переменная YPDIR и в каталоге $YPDIR есть доступный для выполнения файл ypserv. Аналогичные условия требуются и для запуска ypbind (он нужен, потому что серверы NIS одновременно являются и клиентами NIS), только каталог называется /var/yp/binding/имя домена, а исполняемым файлом должен быть ypbind.
Для использования определенного сервера NIS или в случае невозможности отправки широковещательного запроса следует запускать ypbind без ключа broadcast. Для настройки клиента для работы с определенным сервером NIS следует использовать команду ypset, а для настройки клиента NIS в целом применяется ypinit с ключом с:
ypinit –c имя сервера
ypset имя сервера
На клиенте NIS должен быть файл /etc/hosts, если нужно обратиться к серверу NIS по имени.
Настройка подчиненного сервера NIS выполняется только после настройки главного. Отличие состоит в том, что программе ypinit передается ключ –s (slave) вместо –m. Передача карт NIS с главного сервера на подчиненные инициируется с помощью запуска процесса ypxfr.
Yppush требует обновления карт NIS от подчиненных серверов, makedbm создает хэшированную базу данных из текстового файла, yppoll выводит версию карты сервера, yppasswd меняет пароль пользователя, ypcat ypservers выводит список имен NIS-серверов домена, а ypcat –x и ypwhich –x выводят карты NIS. Определить, какой сервер NIS каждый из компьютеров считает главным, возможно с помощью команды ypwhich.