Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sistema_TCP.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
603.97 Кб
Скачать

26. Nis: Сетевая информационная служба

Административная СУБД NIS (Network Information Service — сетевая информацион­ ная служба), выпущенная компанией Sun в 80-х годах, была первой СУБД такого рода. Сначала она называлась Sun Yellow Pages (желтые страницы Sun), но по причинам пра­ вового характера ее пришлось переименовать. Команды NIS до сих пор начинаются с префикса yp, поскольку имя, данное при рождении, забыть трудно. СУБД NIS была с воодушевлением принята поставщиками UNIX-систем и поддерживается во всех дис­ трибутивах Linux.

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

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

Модель NIS

Единицей совместного использования в NIS является запись, а не файл. Запись обыч­ но соответствует одной строке конфигурационного файла. Главный сервер хранит офи­ циальные копии системных файлов, которые находятся в исходных каталогах и имеют текстовый формат. Серверный процесс делает эти файлы доступными по сети. Сервер и его клиенты образуют домен NIS5.

Для повышения эффективности поиска текстовые файлы преобразуются в файлы базы данных с помощью хеширующих функций библиотеки. После редактирования файлов на главном сервере необходимо попросить NIS преобразовать их в хеширован­ ный формат с помощью программы make. Полученный файл называется картой (mар).

С каждой записью может быть связан всего один ключ, поэтому системные файлы иногда приходится транслировать в несколько карт NIS. Например, файл /etc/passwd преобразуется в две карты: passwd.byname и passwd.byuid. Первая служит для отбо­ ра записей по имени пользователя, а вторая — для поиска по идентификатору. Любую из них можно использовать для выборки всех записей файла passwd, но хеширующие функции не сохраняют порядок записей, поэтому нельзя воссоздать точную копию ис­ ходного файла.

5 Не следует путать домены NIS с доменами DNS. Это абсолютно разные понятия, не имею­ щие ничего общего.

782 Часть II. Работа в сети

СУБД NIS позволяет реплицировать карты сети среди группы подчиненных серве­ ров. Это дает возможность ослабить нагрузку на главный сервер и поддерживать функ­ ционирование клиентов даже в том случае, когда некоторые серверы недоступны. Если на главном сервере файл изменился, необходимо разослать соответствующую карту NIS всем подчиненным серверам, чтобы везде были одинаковые данные. Клиенты, не раз­ личают главный и подчиненные серверы.

Схема работы NIS

Файлы данных NIS хранятся в одном каталоге, обычно в каталоге /var/ур. Далее мы будем называть его “NIS-каталогом”. Все карты NIS хранятся в хешированном виде (в формате базы данных) в подкаталоге NIS-каталога, соответствующем домену NIS. Точное имя и количество таких файлов зависит от используемой библиотеки хеширу­ ющих функций. Для каждого поля (ключа), по которому можно осуществить поиск в файле, должна быть создана отдельная карта. Например, в домене cssuns карты DB для файла /etc/passwd могут называться так.

/var/yp/cssuns/passwd.byname

/var/ур/cssuns/passwd.byuid

Команда makedbm создает карты NIS из обычных файлов. Ее никогда не нужно вы­ зывать непосредственно. Файл Makefile в каталоге /var/ур сконфигурирован так, что­ бы автоматически генерировать все распространенные карты NIS. После модификации какого-нибудь системного файла перейдите в каталог /var/ур и запустите программу make. Она сверит время модификации каждого файла со временем модификации соот­ ветствующих карт и выполнит команду makedbm для каждой карты, который необходи­ мо перестроить.

В системах HP-UX вместо команды make используется команда ypmake.

Копирование карт с главного сервера на подчиненные осуществляет команда ypxfr. Она работает по модели запроса: для того чтобы она импортировала карты, ее нужно запускать на каждом подчиненном сервере. Подчиненные серверы время от времени выполняют команду ypxfr для того, чтобы проверить, последние ли версии карт на­ ходятся в их распоряжении. С помощью демона cron можно управлять периодичностью этих проверок.

Стандартная реализация механизма копирования карт несколько неэффективна, поэтому в Linux существует демон rpc.ypxfrd, который можно запустить на главном сервере для ускорения ответов на запросы команды ypxfr. Этот демон работает в обход стандартного протокола NIS и просто рассылает копии файлов карт. К сожалению, в разных системах файлы карт хранятся с использованием различных форматов баз дан­ ных и разного порядка следования байтов, поэтому применение команды ypxfrd чрева­ то возможной несовместимостью.

Команда yppush используется на главном сервере. Она не пересылает никаких данных, а просто заставляет каждый подчиненный сервер выполнить команду ypxfr. Команда yppush задается в файле Makefile, находящемся в NIS-каталоге, и обеспечи­ вает принудительную рассылку откорректированных карт на подчиненные серверы.

Существует специальная карта ypservers, которая не соответствует ни одному обыч­ ному файлу. Он содержит список всех серверов домена и создается автоматически при

Глава 19. Совместное использование системных файлов 783

конфигурировании домена с помощью команды ypinit. Содержимое этой карты изуча­ ется всякий раз, когда главному серверу нужно разослать карты на подчиненные серверы.

После начального конфигурирования единственными активными компонентами си­ стемы NIS остаются демоны ypserv и ypbind. Первый из них работает только на серве­ рах (и главном, и подчиненных); он принимает запросы от клиентов и отвечает на них, осуществляя поиск информации в хешированных файлах карт.

Демон ypbind работает на всех компьютерах NIS-домена, включая серверы. Функ­ ции библиотеки языка С обращаются к локальному демону ypbind всякий раз, когда им нужно ответить на административный запрос (при условии, что это разрешено установ­ ками файла /etc/nsswitch.conf). Демон ypbind находит в соответствующем домене демон ypserv и возвращает его адрес библиотечной функции, которая затем обращает­ ся непосредственно к серверу.

Современные версии демона ypbind периодически проверяют, работают ли они с наиболее активным сервером в домене NIS. Это является улучшением по сравнению с традиционной реализацией демона, в которой осуществлялась привязка к определен­ ному серверу

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

Таблица 19.4. Команды и демоны NIS

Утилита Описание

ypserv Демон сервера NIS; запускается на этапе начальной загрузки

ypbind Демон клиента NIS; запускается на этапе начальной загрузки

domainnaxne Задает домен NIS, в который входит компьютер (выполняется на этапе начальной загрузки)

ypxfr Загружает текущую версию карты с главного сервера

ypxfrd Обслуживает запросы, поступающие от команды ypxfr (работает на главном сервере)

yppush Заставляет подчиненные серверы обновить свои версии карты

makedbm Создает хешированную карту из обычного файла

ypmakea Обновляет хешированные карты для тех файлов, которые изменились

ypinit Конфигурирует компьютер как главный или подчиненный сервер

ypset Заставляет демон ypbind установить соединение с конкретным серверома

ypwhich Определяет, с каким сервером работает текущий компьютер

yppoll Определяет, какую версию карты использует сервер

ypcat Отображает значения, содержащиеся в карте NIS

ypmatch Отображает элементы карты, соответствующие заданному ключу

yppasswd Изменяет пароль на главном сервере NIS

ypchfn Изменяет содержимое поля GECOS на главном сервере NIS

ypchsh Меняет регистрационный интерпретатор команд на главном сервере NIS

yppasswdd Сервер для команд yppasswd, ypchsh и ypchfn

ypupdated6 Сервер для обновления карты NIS (управляется демоном inetd)

а Нужно отдельно включать с помощью команды ypbind -ypsetme или ypbind -ypset (второй вари­

ант опаснее).

б Не используется или не поддерживается во всех системах.

784 Часть II. Работа в сети

Безопасность NIS

Система NIS небезопасна. Особенно неприятен широковещательный режим. Любой узел сети может выступить в качестве сервера для того или иного домена и распростра­ нить среди NIS-клиентов ложные административные данные. В системах Linux эту про­ блему можно смягчить, если явно указать каждому клиенту доступные ему серверы NIS.

Если вопросы безопасности системы для вас очень важны, не следует использовать NIS для управления скрытыми паролями. Используйте для этого такие альтернативные распределенные механизмы аутентификации, как LDAP.

В старых версиях СУБД NIS содержала множество “прорех”. Поэтому используйте только современную версию NIS.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]