Знакомство с NIS

NIS хранит информацию баз данных, находящихся в так называемых отображениях, содержащих keyvalue pairs. Отображения сохранены на центральном хосте, выполняющем NIS сервер, из которого клиентура может отыскивать информацию через различные RPC вызовы. Совершенно часто, отображения сохранены в файлах DBM. (4) Отображения сами по себе обычно генерируются из текстовых файлов типа /etc/hosts или /etc/passwd. Для некоторых файлов, отдельные отображения - созданы, один для каждого типа клавиши. Например, Вы можете искать хост файл для имени хоста также как для адреса IP. Соответственно, два NIS отображения получены из файла, вызываемого hosts.byname и hosts.byaddr, соответственно. Таблица 11.1 списков общих отображений и файлов из которых они сгенерированны.

DBM - простая библиотека управления базой данных которая использует метод хеширования, чтобы ускорить операцию исследования. Имеется свободная DBM реализация из GNU проектируемая вызываемой Gdbm, который является частью большинства Linux распространений.

Master FileMap(s)
/etc/hostshosts.byname, hosts.byaddr
/etc/networksnetworks.byname, networks.byaddr
/etc/passwdpasswd.byname, passwd.byuid
/etc/groupgroup.byname, group.bygid
/etc/servicesservices.byname, services.bynumber
/etc/rpcrpc.byname, rpc.bynumber
/etc/protocolsprotocols.byname, protocols.bynumber
/usr/lib/aliasesmail.aliases

Некоторые стандартные NIS отображения и соответствующие файлы.

В NIS информация баз данных хранится в отображениях, состоящих из пар "ключ-значение". Эти отображения размещены на центральном хосте, где работает NIS-сервер. Клиенты могут получать информацию из этих отображений с помощью различных RPC-вызовов. Часто такие отображения сохраняются в файлах DBM. Отображения обычно генерируются из текстовых файлов, например, /etc/hosts или /etc/passwd. В зависимости от типа ключа для некоторых файлов создаются отдельные отображения. Так, файл хостов можно искать как по имени хоста, так и по IP-адресу. В соответствии с этим из файла хостов получены два NIS-отображения: hosts.byname и hosts.byaddr.

DBM - это простая библиотека управления базой данных, которая использует метод хеширования для ускорения операций поиска. Существует свободная реализация DBM от GNU, называемая Gdbm, которая входит в большинство дистрибутивов Linux.

Имеются и другие файлы и отображения в различных пакетах NIS. Они могут содержать информацию для различных приложений, не обсуждаемых в данной книге. Например, отображение bootparams, которое может использоваться некоторыми серверами BOOTP, или отображения ethers.byname и ethers.byaddr, которые в текущей версии Linux не выполняют никаких функций.

Для некоторых отображений часто используются псевдонимы, которые короче и проще. Чтобы получить полный список псевдонимов, понимаемых вашими NIS-инструментами, можно выполнить следующую команду: $ ypcat -x

ПсевдонимОтображение
"passwd""passwd.byname"
"group""group.byname"
"networks""networks.byaddr"
"hosts""hosts.byname"
"protocols""protocols.bynumber"
"services""services.byname"
"aliases""mail.aliases"
"ethers""ethers.byname"
"rpc""rpc.bynumber"
"netmasks""netmasks.byaddr"
"publickey""publickey.byname"
"netid""netid.byname"
"passwd.adjunct""passwd.adjunct.byname"
"group.adjunct""group.adjunct.byname"
"timezone""timezone.byname"

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

NIS-области играют чисто административную роль. Они обычно невидимы для пользователей и служат для разделения паролей между всеми машинами в области. Таким образом, название NIS-области имеет значение только для администраторов. Название должно быть уникальным в рамках вашей локальной сети. Чтобы установить и показать имя NIS-области вашего компьютера, используйте команду domainname.

NIS-области определяют, к какому NIS-серверу будет обращаться приложение. Например, программа входа в систему на машине Winery будет обращаться к NIS серверу Winery (или одному из них, если их несколько), чтобы получить информацию о пароле пользователя. В то время как приложение, работающее на машине Brewery, будет обращаться к серверу Brewery.

Одним из вопросов, который может возникнуть, является то, как клиент определяет, с каким сервером он должен соединяться. Наиболее простой метод - иметь конфигурационный файл, который указывает хост для поиска сервера. Однако, этот метод может быть довольно жестким, так как он не позволяет клиенту использовать разные серверы (из одной и той же области) в зависимости от их доступности.

Поэтому традиционные реализации NIS полагаются на специальный демон, ypbind, для обнаружения подходящего NIS сервера в их NIS области. Прежде чем выполнить любой NIS запрос, любое приложение должно сначала определить через ypbind, какой сервер используется. Ypbind опрашивает серверы, отправляя запросы по локальной IP-сети. Первый сервер, который ответит на запрос, считается наиболее быстрым, и будет использоваться для всех последующих NIS запросов. После определенного времени или если сервер становится недоступным, ypbind снова опрашивает активные серверы.

Однако следует отметить, что такой метод динамического связывания имеет свои недостатки. Основной проблемой является то, что ypbind слепо доверяет первому серверу, который отвечает на запрос. Это может стать проблемой с точки зрения безопасности, особенно если вы храните ваши базы данных паролей в NIS. Злоумышленник может попытаться маскироваться под NIS сервер. Чтобы предотвратить это, некоторые реализации NIS не используют ypbind по умолчанию, выбирая сервер на основе имени хоста из конфигурационного файла.

В заключение стоит сказать, что NIS является мощным инструментом для централизованного управления данными в сети, но как и любой инструмент, он требует правильной настройки и понимания его работы для обеспечения безопасности и надежности.