Сетевая информационная служба NIS (Network Information Service) - это административная база данных, реализующая централизованное сопровождение и автоматическое распространение важных административных файлов.
NIS позволяет преобразовать ряд стандартных файлов Unix в базы данных, к которым можно обращаться по сети. Такие базы данных называются картами NIS. Некоторые карты создаются из файлов, с которыми вы знакомы по системному администрированию, - в частности, из файла паролей (/etc/passwd) и файла групп (/etc/group). Прочие являются производными от файлов, связанных с сетевым администрированием:
/etc/ethers Источни к NIS-кар т ethers.byaddr и ethers.by пате. Фай л /etc/ethers используется в работе RARP (см. главу 2).
- /etc/hosts Источник карт hosts.byname и hosts.byaddr (см. главу 3).
- /etc/networks Источник карт networks.byname и networks.byaddr (см. главу 3).
- /etc/protocols Источник карт protocols.by пате и protocols.byaddr (см. главу 2).
- /etc/services Источник одной карты - services.byname (см. главу 2).
- /etc/aliases Определяет псевдонимы для адресов электронной почты и служит источником карт mail.aliases и mailbyaddr (см. главу 10).
Определить, какие карты доступны на сервере, можно при помощи команды ypcat -х. Данная команда выводит одинаковый список для наших тестовых систем Solaris и Linux. Список для вашего сервера может отличаться. Вот список, полученный в системе Linux:
% ypcat -х Use "passwd" for ma p "passwd.byname" Use "group" for ma p "group.byname" Use "networks" for ma p "networks.byaddr" Use "hosts" for ma p "hosts.byname" Use "protocols" for ma p "protocols.bynumber" Use "services" for ma p "services.byname" Use "aliases" for ma p "mail.aliases" Use "ethers" for ma p "ethers.byname"
MIS позволяет централизованно хранить на сервере важные административные файлы, предоставляя доступ к ним всем рабочим станциям сети. Все карты хранятся на головном сервере, выполняющем серверный процесс NIS - ypserv. Клиентские системы обращаются к картам по сети. Клиенты используют ypbind для обнаружения сервера.
Сервер NIS и его клиенты составляют домен NIS. Этот термин NIS делит с DNS. Домен NIS обозначается доменным именем NIS. Единственное предъявляемое к именам требование заключается в том, что в пределах одной локальной сети различные домены NIS должны иметь разные имена. Хотя домены NIS и DNS - различные сущности, но Sun рекомендует использовать в качестве имен NIS-доменов имена DNS-доменов, чтобы упростить администрирование и избежать путаницы.
NIS использует имя своего домена при создании подкаталога в иерархии /var/ ур для хранения карт. Например, домен DNS нашей воображаемой сети носит имя wrotethebook.com, и такое же имя мы используем для нашего домена NIS. NIS создает каталог /var/ур/wrotethebook.com и хранит в нем карты NIS.
Протоколы и команды NIS изначально были определены компанией Sun Microsystems, однако сама служба в настоящее время получила широкое распространение в различных реализациях. Многочисленные примеры этого раздела относятся к системе Linux, а не Solaris, и замечательно иллюстрируют этот факт. Синтаксис команд в различных системах весьма схож.
Команда domainname позволяет узнать либо задать имя домена NIS. Суперпользователь может сделать wrotethebook.com именем домена NIS, выполнив следующую команду:
# domainname wrotethebook.com
Имя домена NIS обычно указывается в процессе загрузки системы - с этой целью команда domainname помещается в один из загрузочных сценариев. Во многих системах имя домена NIS, выступающее в качестве аргумента команды domainname, хранится в отдельном файле. Так, в системах Solaris значение имени домена NIS извлекается из файла /etc/defaultdomain. Как видно из следующего примера, defaultdomain содержит только имя домена NIS:
% cat /etc/defaultdomain wrotethebook.com
В системах Red Hat Linux имя домена NIS - лишь одно из значений, хранящихся в файле /etc/sysconfig/network:
$ cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=jerboas.wrotethebook.com NISDOMAIN=wrotethebook.com
Инициализация сервера NIS и создание первых вариантов карт выполняется при помощи make. Файл /var/ур/Makefil e содержит инструкции, необходимые для сборки карт. Как уже говорилось, каталог для карт получает имя, совпадающее с именем домена NIS. Makefile читает файлы из каталога /etc и сохраняет созданные на их основе карты в новом каталоге. Чтобы инициализировать систему Linux в качестве сервера NIS, выполните подобную последовательность команд:
# domainname wrotethebook.com # cd /var/ур # make make[1]: Entering directory '/var/yp/wrotethebook.com' Updating hosts.byname... Updating hosts.byaddr... Updating networks.byaddr... Updating networks.byname... Updating protocols.bynumber... Updating protocols.byname... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating passwd.byname.., Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating netid.byname... make[1]: Leaving directory '/var/yp/wrotethebook.com'
После инициализации карт запустите процесс сервера NIS ypse rv и связую- щий процесс NIS - ypbind:
# ypserv # ypbind
Наша система теперь выступает в роли как NIS-сервера, так и NIS-клиента. Быстрая проверка при помощи ypwhich показывает, что мы связаны с нужным сервером. Воспользуйтесь ypcat или ypmatch, чтобы убедиться, что данные с сервера действительно доступны. В следующем примере мы используем ypcat:
# ypwhich localhost # ypcat hosts 172.16.55.105 cow cow.wrotethebook.com 172.16.55.106 pig pig.wrotethebook.com 172.16.26.36 island.wrotethebook.com island 127.0.0.1 localhost
Клиентам остается только указать корректное доменное имя и выполнить приложение связующего модуля - ypbind:
# domainname wrotethebook.com # ypbind
Большинство клиентов NIS для обнаружения сервера используют ypbind. Исходя из имени домена NIS, ypbind передает широковещательный запрос к серверу этого домена. К первому из ответивших серверов и «привязывается» клиент. Теория гласит, что сервер, ответивший быстрее прочих, имеет наи- меньшую загрузку. Как правило, гипотеза работает хорошо. Тем не менее существует вероятность привязки клиента к неподходящей системе, а именно к системе, на которой случайно оказался установлен сервер ypserv, либо к системе, которую специально настроили в качестве ложного сервера. Принимая во внимание такую возможность, некоторые системы позволяют явным образом указать сервер, с которым общается клиент. Этой цели в Linux служит файл /etc/yp.conf. Синтаксис записей файла варьируется от версии к версии, поэтому обратитесь к документации по своей системе, прежде чем использовать файл.
Поместите имя домена NIS в подходящий загрузочный файл, чтобы настройки NIS продолжали действовать и после перезагрузки. Команды ypbind и ypserv, вероятно, уже присутствуют в одном из загрузочных сценариев. В системе Red Hat Linux программам ypbind и ypserv соответствуют специальные сценарии в каталоге /etc/init.d. Поместив значение NISDOMAIN в /etc/ sysconfig/network, не забудьте при помощи команды chkconfig убедиться, что сценарии ypbind и ypserv выполняются в процессе загрузки системы.
NIS является возможной альтернативой DNS, однако в большинстве систем применяется как NIS, так и DNS. Преобразование имен узлов в IP-адреса может быть возложено на DNS, NIS и таблицу узлов. Порядок опроса различных источников определяется в файле nsswitch.conf.