/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

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

Тематические ссылки:

/etc/resolv.conf, named

getaddrinfo(), gethostbyaddr(), gethostbyname(), getnameinfo(), getnetbyaddr(), getnetbyname()




Предыдущий раздел: Конфигурационные файлы