Выбор нужных карт После проверки


Другие карты, подобно services.byname, не дают таких изменений, но избавляют от редактирования ряда настроек. Карта services.byname ценна, если Вы устанавливаете любые сетевые прикладные программы, которые используют сервисное имя не в стандартном файле services.

Вообще, надо иметь выбор, когда функция поиска использует локальные файлы, когда она делает запрос к серверу NIS станции, и в каких случаях используются другие серверы, типа DNS. GNU libc позволяет Вам конфигурировать порядок, в котором функция обращается к этим услугам. Это управляется через файл /etc/nsswitch.conf (сокращение от Name Service Switch), но он, конечно, не ограничен обслуживанием имен. Для любой из функций поисковой таблицы данных, поддерживаемых GNU libc, файл содержит соответствующую строку.

Порядок опроса зависит от типа данных, которые предлагает каждый сервис. Маловероятно, что карта services.byname будет содержать записи, отличающиеся от своих аналогов в локальном файле services. Она будет содержать только дополнительные записи. Так что проще сначала сделать запрос локальных файлов и проверять NIS только, если сервисное имя не найдено. С другой стороны, информация об именах машин может изменяться очень часто, так что сервер DNS или NIS должен всегда иметь наиболее точные данные в то время, как локальный файл hosts сохраняется только как копия на случай, если DNS и NIS не сработали. Следовательно, для hostname обычно надо проверять локальный файл данных в последнюю очередь.

Следующий пример показывает, как вынудить функции gethostbyname и gethostbyaddr искать в NIS и DNS до просмотра файла hosts и как заставить функцию getservbyname просматривать локальные файлы перед запросом к NIS. Эти функции опробуют каждый из перечисленных сервисов. Если поиск прошел успешно, возвращается результат, иначе выбирается следующий сервис. Установка файла для этих приоритетов:

# small sample /etc/nsswitch.conf # hosts: nis dns files services: files nis

Ниже приведен полный список сервисов и обращений, которые могут использоваться в файле nsswitch.conf.

nis

Использовать текущий сервер NIS домена. Его расположение задается в yp.conf, как показано в предыдущем разделе. Для записи hosts запрашиваются карты hosts.byname и hosts.byaddr.

nisplus или nis+

Использовать для этого домена сервер NIS+. Где его искать берется из файла /etc/nis.conf.

dns

Использовать сервер имен DNS. Этот сервисный тип полезен только с записью hosts. Сервер, который будет запрошен, задается в resolv.conf.

files

Использовать локальный файл (например, /etc/hosts для запроса hosts).

compat

Нужна совместимость со старыми форматами файлов. Эта опция может использоваться, когда NYS или glibc 2.x используются для поиска в NIS или NIS+. В то время, как эти версии обычно не могут интерпретировать старые записи NIS в файлах passwd и group, опция compat позволяет им работать с этими форматами.

db

Информация берется из файлов DBM, размещенных в каталоге /var/db. Соответствующее имя карты NIS используется для этого файла.

В настоящее время реализация NIS в GNU libc поддерживает следующие базы данных для nsswitch.conf: aliases, ethers.group, hosts, netgroup, network, passwd, protocols, publickey, rpc, services и shadow.

Пример 13-2 показывает более полный пример, который представляет новое свойство nsswitch.conf. Ключевое слово [NOTFOUND=return] в записи hosts предписывает клиенту NIS вернуться, если нужный элемент не может быть найден в базе данных NIS или DNS.



Содержание раздела