- •Предмет совместного использования
- •Копирование файлов
- •Install опции [каталог-адресат];
- •Вытягивание Файлов: система expect
- •Сетевая информационная служба
- •"Волшебные ключики" nis
- •Сетевые группы
- •Пренмушества и недостаткн nis
- •Обзор системы nis
- •Конфигурирование клиентов nis
- •Другие системы управления базами аанных
- •Назначение приоритетов источникам административной информации
Обзор системы nis
Файлы данных NIS и большинство команд этой системы хранятся в одном каталоге: /var/yp, /usr/etc/yp или /etc/yp. В реальности некоторые системы используют два каталога: один для команд, другой для файлов данных. Все NIS-карты хранятся в виде пар ndbm-файлов. Один из них называется карта, .dir, а второй — карта .раg; хранятся оба они в подкаталоге NIS-каталога, указанном для домена NIS. Например, в домене cssuns могут быть следующие ndbm-файлы для карт /etc/passwd:
/usr/etc/yp/cssuns/passwd.bynaroe.dir
/usr/etc/yp/cseune/passwd .byname,pag
/usr/etc/yp/cssuns/passwd.byuid.dir
/usr/etc/yp/csaune/pasawd.byuid.pag
Для каждого поля, по которому можно произвести поиск в файле, должна быть создана отдельная карта. Поиск в файле passwd можно производить по имени и по UID, поэтому из него получаются две карты (четыре файла).
NIS-карты из обычных файлов создает команда makedbm.
Копирование карт с главного сервера на подчиненные осушествляется помощью команды ypxfr. Это "вытягивающая" команда; для того * она импортировала карты, ее нужно запускать на каждом подчиненном сервере. Отвечает на эти запросы демон с именем ypxfrd, который запускается на главном сервере. Команда ypxfr — интеллектуалка, она не пересылает карту, если та устарела. Подчиненные серверы иногда выполняют программу ypxfr для того, чтобы проверить, последние ли версии карт находятся в их распоряжении. С помощью демона cron можно управлять частотой этих проверок.
Демон yppush — это "проталкивающая" версия ypxfr, которая исполняется на главном сервере. Она, по сути дела, не пересылает никаких даанных, а просто заставляет каждый подчиненный сервер выполнить ypxfr. манда yppush задается в файле Makefile, находящемся в NIS-кат для того, чтобы обеспечить рассылку откорректированных карт на подчиненные серверы.
Есть специальная карта, ypaervers, которая не соответствует ни одному обычному файлу. Эта карта содержит список всех серверов данного домена и строится автоматически при его конфигурировании. Содержимое карты изучается каждый раз, когда главному серверу нужно разослать карты на вспомогательные серверы.
После начального конфигурирования единственными активными компонентами системы NIS остаются демоны ypserv и ypbind. Демон урserv работает только на серверах (и главном, и подчиненных), принимает запросы клиентов и отвечает на них, осуществляя поиск информации в ndbm-картах.
Демон ypbind работает на всех машинах NIS-домена, в том числе серверах. С-библиотека обращается к локальному демону ypbind вс раз, когда к ней произошло обращение с административным запросом. Демон ypbind находит в соответствующем каталоге ypserv и возвращает сведения о нем С-библиотеке, которая затем обращается непосредственно к этому серверу.
После того как ypbind найдет сервер, он будет пользоваться этим cepвером при всех запросах до тех пор, пока сервер не отключится или не возникнет какая-либо иная коммуникационная проблема. Демон ypbind на машине-сервере не предоставляет себе никаких льгот, поэтому серверы обязательно обращаются к самим себе. Механизм обработки запроса показан на рис. А.
Рис. Процедура обработки запроса в системе NIS
В некоторых обстоятельствах (например, когда все серверы, кроме одного, одновременно перезагружаются) клиенты могут "закрепиться" на одном сервере и отказаться уйти с него даже после того, как станут доступны остальные серверы. Это может значительно уменьшить быстродействие системы.
В NIS есть ряд второстепенных команд, которые используются для изучения карт, определения версий карт, используемых серверами, и управления привязкой клиентов к серверам. Полный перечень команд и демонов NIS дан в таблице. 18.3.
-
Программа
Описание
ypserv
Демон сервера NIS, запускается во время начальной загрузки
ypbind
Демон клиента NIS, запускается во время начальной загрузки
domainname
Устанавливает имя NIS-домена, в котором находится машина (выполняется во время начальной загрузки)
Ypxfr
Копирует текущую версию карты с главного сервера
Ypxfrd
Обслуживает запросы из ypxfr (прогоняется на главном сервере)
yppush
Заставляет подчиненные серверы корректировать их версии карты
makedbn
Создает ndbm-карту на основе обычного файла
ypmake^
Обновляет ndbm-карты на основе обычных файлов, которые из менились
ypinit
Конфигурирует машину как главный или подчиненный сервер
ypset
Заставляет ypbind установить соединение с конкретным сервером
ypwhich
Определяет, какой сервер использует текущая машина
yppoll
Определяет, какую версию карты использует сервер
ypcat
Выводит на экран значения, которые содержатся в NIS-карте
ypmatch
Выводит на экран элементы карты по заданному ключу
yppasswd
Изменяет пароль на главном сервере NIS
ypchfn
Изменяет информацию GECOS на главном сервере NIS
ypchsh
Меняет регистрационный shell на главном сервере NIS
yppasswdd
Сервер для yppasswd, ypchsh и ypchfn
ypupdated
Сервер для корректировки NIS-карт (им управляет inetd)
Созданне NIS-домена
NIS следует инициализировать на главном сервере, на подчиненных сервеpax и на каждом клиенте. Эта работа выполняется в два этапа. Во-первых, необходимо запустить ypinit на каждом сервере. Во-вторых, на каждой^ машине домена следует установить доменное имя из одного из системных файлов запуска и конфигурировать /etc/passwd и /etc/group на импорт данных NIS.
Конфигурирование серверов NIS
Для инициализации главного и подчиненных серверов домена применяется программа ypinit. На главном сервере используются следующие команды:
cd /var/yp /* The NIS directory, wherever it is */
domainname foo /* Name the new domain. */
ypinit - m /*Initialize as inaster server. */
/usr/etc/ypserv /*Start the NIS server. */
Флаг -m указывает ypinit на то, что она конфигурирует главный серверу эта программа сама предложит Вам ввести список подчиненных серверов, После запуска главного сервера необходимо инициализировать каждый подчиненный сервер, для чего запускается программа ypinit с флагом -s:
cd /var/yp
ypinit -s master /* Argument is master's hostname */
/usr/etc/ypserv
Команда ypinit -s создает локальную копию текущих данных главного (сервера; наличия в них файлов данных для какого-либо домена достаточно -для того, чтобы демон ypserv знал. что он должен обслуживать этот домен.
На каждом подчиненном сервере необходимо задать crontab-элементы, которые будут "вытягивать" свежие копии всех карт с главного сервера. \ Команда ypxfr карта, где карта — имя (например passwd.byuid),; пересылает указанную карту с главного сервера. Эта команда выполняется один раз для каждой карты. Карты, как правило, изменяются не одновременно и, если пропускная способность сети ограничена, вам может захотеться пересылать одни карты чаще, чем другие. В большинстве ситуаций речь может идти о пересылке всех карт один-два раза в день (лучше поздно вечером). Следующий сценарий пересылает все карты:
*! /bin/csh -f
set. mydomain = '/usr/bin/domainname'
cd /var/yp/$mydomain # the NIS directory
foreach map ('/usr/bin/is')
/usr/etc/ypxfr $map
end
В некоторых системах используются сценарии ypxfr_lperday, ypxfr_2perday и ypxfr_lperhour, которые пересылают NIS-карты с различной частотой
