/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