/etc/nsswitch.conf
Конфигурационный
файл-коммутатор службы имен.
Имя
/etc/nsswitch.conf
Описание:
В файле nsswitch.conf определен порядок работы
подпрограмм nsdispatch() (диспетчера коммутатора
службы имен) в библиотеке сокетов.
Конфигурационный файл
определяет, каким образом процессом осуществляется поиск по
различным базам данных, содержащим информацию о хостах и
сетях. Каждая база данных имеет источник (например,
локальные файлы и DNS); порядок поиска по источникам
определен в файле nsswitch.conf.
Каждая запись в файле nsswitch.conf содержит имя базы данных и
список источников с разделением пробелами. Каждому источнику
может соответствовать дополнительный завершающий критерий,
который определяет необходимость использования следующего
источника в списке. В противном случае поиск завершается на
текущем источнике. Каждый критерий содержит один или
несколько кодов состояния, а также действия, которые
предпринимаются при появлении определенных кодов.
Источники
Реализованы следующие
источники:
файлы
Локальные файлы, например /etc/hosts.
DNS
Система доменных имен. В базах
данных hosts и networks используются записи класса
IN.
Базы данных
Функциями библиотеки C
используются следующие базы данных:
|
База данных
|
Функция
|
|
hosts
|
getaddrinfo(), gethostbyaddr(), gethostbyname() и getnameinfo()
|
|
networks
|
getnetbyaddr(), getnetbyname()
|
Коды состояния
Существуют следующие коды
состояния:
success
Запрашиваемая запись найдена.
notfound
Запись отсутствует в
источнике.
tryagain
Источник занят, но может
ответить на повторные попытки.
unavail
Источник не отвечает, или
запись повреждена.
Действия
Для каждого из кодов состояния
возможно одно из двух действий:
continue
Переход к следующему
источнику.
return
Возврат текущего результата.
Формат файла
В BNF синтаксис nsswitch.conf описан следующим образом:
<запись> ::= <база
данных> ":" [<источник> [<критерии>]]*
<критерии> ::= "["
<критерий>+ "]"
<критерий> ::=
<состояние> "=" <действие>
<состояние> ::=
"success" | "notfound" | "unavail" | "tryagain"
<действие> ::=
"return" | "continue"
Каждая запись в
файле начинается с новой строки. Символ решетки (#) отделяет комментарий,
который продолжается до конца строки. Пустые строки
игнорируются. Обратная косая черта (\) в конце строки экранирует
символ новой строки, и текущая строка продолжается в
следующей строке. Регистр записей не учитывается.
Критерии по умолчанию
предполагают возврат результата в случае success и продолжение работы во
всех остальных случаях (например, [success=return
notfound=continue unavail=continue tryagain=continue]).
Исторически во многих базах
данных присутствовали функции перечисления, часто в форме getXXXent().
Их использование было целесообразным, когда базы данных
находились локальных файлах, но в случае нескольких
возможных источников неизвестного размера использовать их не
имеет смысла, либо их работа неэффективна. По-прежнему
предусмотрены соответствующие интерфейсы для обеспечения
совместимости, но источник может не предоставлять полные
записи, или в случае существования нескольких источников с
одинаковыми данными могут извлекаться дубликаты записей.
Если по какой-либо причине
файл nsswitch.conf не сущестует или содержит
пропущенные или поврежденные записи, то утилита nsdispatch() использует в качестве
значения записи по умолчанию files для базы данных network и files dns для базы данных hosts.
Этот свободно
распространяемый коммутатор служб имен разработан Люком
Мюберном (Luke Mewburn) на основе информации из руководств
ULTRIX svc.conf и Solaris nsswitch.conf.
Примеры:
Поиск хостов в /etc/hosts и затем из DNS:
hosts: files dns