Конфигурационный файл-коммутатор службы имен
/etc/nsswitch.conf
ЗОСРВ «Нейтрино»
В файле nsswitch.conf определен порядок работы подпрограмм nsdispatch() (диспетчера коммутатора службы имен) в библиотеке сокетов.
Конфигурационный файл определяет, каким образом процессом осуществляется поиск по различным базам данных, содержащим информацию о хостах и сетях. Каждая база данных имеет источник (например, локальные файлы и DNS); порядок поиска по источникам определен в файле nsswitch.conf.
Каждая запись в файле nsswitch.conf содержит имя базы данных и список источников с разделением пробелами. Каждому источнику может соответствовать дополнительный завершающий критерий, который определяет необходимость использования следующего источника в списке. В противном случае поиск завершается на текущем источнике. Каждый критерий содержит один или несколько кодов состояния, а также действия, которые предпринимаются при появлении определенных кодов.
Источники
Реализованы следующие источники:
Базы данных
Функциями библиотеки C используются следующие базы данных:
База данных | Функция |
---|---|
hosts | getaddrinfo(), gethostbyaddr(), gethostbyname() и getnameinfo() |
networks | getnetbyaddr(), getnetbyname() |
Коды состояния
Существуют следующие коды состояния:
Действия
Для каждого из кодов состояния возможно одно из двух действий:
Формат файла
В 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
Базовые подсистемы ЗОСРВ «Нейтрино»
getaddrinfo(), gethostbyaddr(), gethostbyname(), getnameinfo(), getnetbyaddr(), getnetbyname()
Предыдущий раздел: Конфигурационные файлы