The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

nsswitch.conf (4)
  • nsswitch.conf (4) ( Solaris man: Специальные файлы /dev/* )
  • >> nsswitch.conf (4) ( Русские man: Специальные файлы /dev/* )
  • nsswitch.conf (5) ( FreeBSD man: Форматы файлов )
  • nsswitch.conf (5) ( Русские man: Форматы файлов )
  • nsswitch.conf (5) ( Linux man: Форматы файлов )
  • Форматы файлов

    nsswitch.conf(4)

    НАЗВАНИЕ

    nsswitch.conf - конфигурационный файл для выбора соответствующей службы имен

    СИНТАКСИС

    /etc/nsswitch.conf

    ОПИСАНИЕ

    Операционная система использует ряд баз данных с информацией о хостах, сетях, пользователях/паролях и группах. Данные в эти базы могут поступать из различных источников: имена и адреса хостов, например, можно найти в файле /etc/hosts, с помощью службы NIS, NIS+, LDAP или DNS. Для каждой базы данных можно использовать любое количество источников; источники информации и порядок их просмотра задаются в файле /etc/nsswitch.conf.

    Файл используется для управления следующими базами данных:

    База данных Используется программами
    aliases sendmail(1M)
    automount automount(1M)
    bootparams rpc.bootparamd(1M)
    ethers ethers(3SOCKET)
    group getgrnam(3C)
    hosts gethostbyname(3NSL). См. "Взаимодействие с netconfig".
    ipnodes getipnodebyname(3SOCKET)
    netgroup innetgr(3C)
    netmasks ifconfig(1M)
    networks getnetbyname(3SOCKET)
    passwd getpwnam(3C), getspnam(3C)
    printers lp(1), lpstat(1), cancel(1), lpr(1B), lpq(1B), lprm(1B), in.lpd(1M), lpadmin(1M), lpget(1M), lpset(1M)
    protocols getprotobyname(3SOCKET)
    publickey getpublickey(3NSL), secure_rpc(3NSL)
    rpc getrpcbyname(3NSL)
    sendmailvars sendmail(1M)
    services getservbyname(3SOCKET). См. "Взаимодействие с netconfig".

    При этом можно использовать следующие источники:

    Источник Использует
    files Файлы /etc/hosts, /etc/passwd, /etc/inet/inodes, /etc/shadow
    nis Службу NIS(YP)
    nisplus Службу NIS+
    ldap Службу LDAP
    dns Только для имен хостов; использует службу доменных имен Internet.
    compat Только для учетных записей пользователей и групп; поддерживает кострукции "+" и "-". См. "Взаимодействие с конструкциями +/-".
    user Только для принтеров; реализует поддержку файла ${HOME}/.printers.
    xfn Только для принтеров; реализует поддержку контекстов принтеров FNS. Позволяет отказаться от использования контекстов принтеров FNS.

    Для каждой базы данных имеется запись в файле /etc/nsswitch.conf. Обычно эти записи будут простыми, например "protocols: files" или "networks: files nisplus". Однако при указании нескольких источников иногда необходимо точно указать условия, при которых будет использоваться каждый источник. Источник может возвратить один из следующих кодов:

    Состояние Значение
    SUCCESS Запрошенная запись была найдена в базе данных.
    UNAVAIL Источник не сконфигурирован в данной системе или произошел внутренний сбой.
    NOTFOUND Источник сообщил, что соответствующей записи нет
    TRYAGAIN Источник занят или не отвечает; возможно, ответ будет получен при следующих попытках.

    Для каждого кода статуса возможны два действия:

    Действие Значение
    continue Обратиться к следующему источнику в списке.
    return Завершить поиск.

    Кроме того, для статуса TRYAGAIN возможны также следующие действия:

    Действие Значение
    forever Повторять обращения к текущему источнику, пока не будет получен ответ.
    n Повторить обращения к текущему источнику еще n раз, где n - целое число от 0 до MAX_INT (т.е., 2,14 миллиарда). После n попыток перейти к следующему источнику.

    Полный синтаксис записи имеет вид:

    <запись> ::=
    <база данных> ":" [<источник> [<критерии>]]*
    <критерии> ::=
    "[" <критерий>+ "]"
    <критерий> ::=
    <статус> "=" <действие>
    <статус> ::=
    "success" | "notfound" | "unavail" | "tryagain"

    Для всех действий, кроме TRYAGAIN, используется следующий синтаксис:

    <действие> ::=
    "return" | "continue"

    Для статуса TRYAGAIN синтаксис действия следующий:

    <действие> ::=
    "return" | "continue" | "forever" | <n>
    <n> ::=
    0...MAX_INT

    Каждая запись занимает одну строку файла. Пустые строки и строки, начинающиеся с пробела, игнорируются. Все символы строки, начиная с символа #, тоже игнорируются; символ # можно указывать в любой позиции строки, - он обозначает начало комментария. Имена баз данных и источников зависят от регистра символов, но в именах действий и состояний регистр символов значения не имеет.

    Библиотечные функции содержат встроенные стандартные записи, которые используются при отсутствиии или синтаксической некорректности соответствующих записей в файле nsswitch.conf.

    Стандартные критерии для серверов DNS и NIS в режиме перенаправления DNS ("DNS-forwarding") (если DNS-сервер не отвечает или занят):
      [SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=continue].

    Стандартные критерии для всех остальных источников:
      [SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=forever].

    Стандартные или явно заданные критерии не имеют смысла, если задаются после последнего источника в записи; они игнорируются, поскольку стандартное действие в этом случае - возвращать результат вызывающему, независимо от кода статуса, который вернул источник.

      Взаимодействие с netconfig

    Чтобы гарантировать возврат согласованных результатов, функции gethostbyname(3NSL), getipnodebyname(3SOCKET), getservbyname(3SOCKET) и netdir_getbyname(3NSL) реализованы на базе одной и той же внутренней библиотечной функции. Эта функция реализует общесистемные правила поиска хостов, сетей и служб на базе записей семейства inet в файле netconfig(4), и использует записи в файле nsswitch.conf только если записи в файле netconfig содержат "-" в последнем столбце (там задаеются библиотеки преобразования имен в адреса, nametoaddr). Подробнее об этом см. в разделах "ПРИМЕЧАНИЯ" на страницах справочного руководства gethostbyname(3NSL) и getservbyname(3SOCKET).

      Взаимодействие с сервером NIS+ в режиме совместимости с NIS/YP

    Сервер NIS+ может работать в режиме совместимости с NIS ("YP-compatibility mode"), когда он обрабьатывает запросы службы NIS (YP) наряду с запросами NIS+. В этом случае клиенты получают из источника "nis" практически те же результаты (за исключением функции getspnam(3C)), что и из "nisplus"; рекомендуется, однако, использовать "nisplus" вместо "nis".

      Взаимодействие с сервером в режиме перенаправления DNS

    Сервер NIS (YP) может работать в режиме "перенаправления DNS", когда он перенаправляет запросы поиска имен и адресов хостов, отсутствующих в его базе данных, серверу DNS. В этом случае указания "nis" в качестве источника для "hosts" достаточно для обеспечения поиска в DNS; источник "dns" явно указывать не обязательно.

    В SunOS 5.3 (Solaris 2.3) и последующих версиях, сервер NIS+ в режиме совместимости с NIS/YP может также обеспечивать редим перенаправления DNS (см. rpc.nisd(1M)). Перенаправление выполняется только для запросов от клиентов YP; правила поиска хостов (hosts) на этих клиентах надо сконфигурировать соответствующим образом.

      Устаревание паролей

    При включении устаревания паролей допустимо использование лишь ограниченного набора источников для базы данных passwd в файле /etc/nsswitch.conf:

    passwd:
     files
    
    passwd:
     files nis
    
    passwd:
     files nisplus
    
    passwd:
     files ldap
    
    passwd:
     compat
    
    passwd_compat:
     nisplus
    
    passwd_compat:
     ldap
    

    При любых других значениях команда passwd(1) не сработает при попытке изменить пароль после устаревания, что не позволит пользователю зарегистрироваться. Только перечисленные выше источники можно использовать при включенном устаревании паролей. Некорректные установки источников для passwd можно обойти с помощью опции -r команды passwd(1) (она задает репозитории, в которых меняются учетные записи пользователей). Эта опция имеет более высокий приоритет, чем установки в файле nsswitch.conf, и позволяет явно задать службу имен, с помощью которой вы хотите изменить пароль.

      Взаимодействие с конструкциями +/-

    Версии до SunOS 5.0 не поддерживали файл nsswitch.conf, но позволяли в некоторой степени управлять поиском. В файле /etc/passwd можно было задавать записи вида +пользователь (включить пользователя из базы NIS passwd.byname), -пользователь (исключить указанного пользователя) и + (включить всех пользователей из базы NIS passwd.byname, кроме явно исключенных). Обычно задавалось правило "все пользователи из файла и все пользователи из NIS", для задания которого в конце файла /etc/passwd добавлялась строка со знаком +. Файл nsswitch.conf обеспечивает другой сопособ реализации этого правила ("passwd: files nis"), н требующий добавления записей + в файлы /etc/passwd и /etc/shadow (этот файл впервые появился в SunOS 5.0, см. shadow(4)).

    Если этого недостаточно, источник, обеспечивающий полную совместимость с NIS/YP, поддерживает семантику +/- в полном объеме. Он читает файл /etc/passwd для функций getpwnam(3C) и /etc/shadow для функций getspnam(3C) и, если находит записи +/-, вызывает соответствующий источник. По умолчанию это "nis", но стандартное значение можно переопределить, задав "nisplus" или "ldap" в качестве источника для псевдо-базы данных passwd_compat.

    Учтите, что для каждой записи в файле /etc/passwd должна быть соответствующая запись в файле /etc/shadow.

    Источник полной совместимости с NIS/YP также поддерживает в полном объеме семантику записей +/- для групп; соответствующая псевдо-база данных называется group_compat.

      Полезные конфигурации

    Встроенные стандартные записи для всех баз данных используют службу NIS (YP) в качестве службы имен масштаба предприятия и идентичны тем, что представлены в стандартной конфигурации данного файла:

    passwd:
     files nis
    
    group:
     files nis
    
    hosts:
     nis [NOTFOUND=return] files
    
    ipnodes:
     nis [NOTFOUND=return] files
    
    networks:
     nis [NOTFOUND=return] files
    
    protocols:
     nis [NOTFOUND=return] files
    
    rpc:  nis [NOTFOUND=return] files
    
    ethers:
     nis [NOTFOUND=return] files
    
    netmasks:
     nis [NOTFOUND=return] files
    
    bootparams:
     nis [NOTFOUND=return] files
    
    publickey:
     nis [NOTFOUND=return] files
    
    netgroup:
     nis
    
    automount:
     files nis
    
    aliases:
     files nis
    
    services:
     files nis
    
    sendmailvars:
     files
    
    printers:
     user files nis nisplus xfn
    

    Правило "nis [NOTFOUND=return] files" означает: "если служба nis недоступна (UNAVAIL), перейти к файлам (files), а если данные в ней не найдены (NOTFOUND), прекратить поиск как недавшийся; другими словами, рассматривать nis как авторитетный источник информации и обращаться к файлам только если служба nis не работает". Это и другие правила, представленные в стандартной конфигурации, идентичны жестко установленным правилам в версиях SunOS до 5.0.

    Если требуется совместимость с записями +/- в файлах passwd и group, просто измените записи для баз данных passwd и group следующим образом:

    passwd:
     compat
    
    group:
     compat
    

    Если в качестве службы имен масштаба предприятия используется NIS+, стандартную конфигурацию следует изменить так, чтобы nisplus использовалась вместо nis для каждой базы данных на клиентских машинах. Файл /etc/nsswitch.nisplus содержит пример конфигурации, которую можно просто скопировать в /etc/nsswitch.conf для установки соответствующих правил.

    Если в качестве службы имен масштаба предприятия используется LDAP, стандартную конфигурацию следует изменить так, чтобы ldap использовалась вместо nis для каждой базы данных на клиентских машинах. Файл /etc/nsswitch.ldap содержит пример конфигурации, которую можно просто скопировать в /etc/nsswitch.conf для установки соответствующих правил.

    Если требуется поддержка записей +/- совместно со службой nisplus, используйте следующие четыре записи:

    passwd:
     compat
    
    passwd_compat:
     nisplus ИЛИ ldap
    
    group:
     compat
    
    group_compat:
     nisplus ИЛИ ldap
    

    Для получения информации о хостах, не представленных в службе имен масштаба предприятия, NIS+ и LDAP, от службы доменных имен (Internet Domain Name Service), используйте следующую конфигурацию и настройте файл /etc/resolv.conf (подробнее см. на странице справочного руководства resolv.conf(4)):

    hosts:
     nisplus dns [NOTFOUND=return] files
    
    or
    hosts:
     ldap dns [NOTFOUND=return] files
    

      Перечисление - getXXXent()

    Многие базы данных имеют функции перечисления (enumeration): passwd имеет функцию getpwent(), hosts - gethostent(), и т.д. Это было оправдано, когда единственным источником были файлы, но обычно лишено смысла для иерархически организованных источников, содержащих большое количество записей, тем более, если таких источников указано несколько. Соответствующие интерфейсы по-прежнему поддерживаются и их реализации, по возможности, дают осмысленные результаты, но возвращаемые данные могут быть неполны (перечисление хостов источником dns просто не поддерживается), несогласованы (если используется несколько источников), форматированы неожиданным образом (для хоста с каноническим именем и тремя псевдонимами источник nisplus вернет четыре записи, причем, не обязательно подряд), или потребуют больших ресурсов для получения (перечисление записей в базе данных passwd для 5000 пользователей, вероятно, не лучшая идея). Более того, несколько потоков в одном процессе, использующие одну и ту же реентерабельную функцию перечисления (reentrant enumeration function) (функции getXXXent_r() поддерживаются, начиная с SunOS 5.3), совместно используют текущую позицию в перечисляемых данных; если вызовы идут вперемешку, перечисляться будут несвязанные подмножества одной и той же базы данных.

    В общем случае, использовать функции перечисления не рекомендуется. Для баз данных passwd, shadow и group иногда может иметь смысл использовать функции fgetgrent(), fgetpwent() и fgetspent() (см. страницы справочного руководства getgrnam(3C), getpwnam(3C) и getspnam(3C), соответственно), обращающиеся только к файлам.

    ФАЙЛЫ

    Источник по имени SSS реализован разделяемой библиотекой nss_SSS.so.1, которая находится в каталоге /usr/lib.

    /etc/nsswitch.conf
    Файл конфигурации.
    /usr/lib/nss_compat.so.1
    Реализует источник "compat".
    /usr/lib/nss_dns.so.1
    Реализует источник "dns".
    /usr/lib/nss_files.so.1
    Реализует источник "files".
    /usr/lib/nss_nis.so.1
    Реализует источник "nis".
    /usr/lib/nss_nisplus.so.1
    Реализует источник "nisplus".
    /usr/lib/nss_ldap.so.1
    Реализует источник "ldap".
    /usr/lib/nss_user.so.1
    Реализует источник "user".
    /usr/lib/nss_xfn.so.1
    Реализует источник "xfn".
    /etc/netconfig
    Файл конфигурации для функций netdir(3NSL), которые перенаправляют поиск хостов/устройств на источники, указанные в nsswitch.conf.
    /etc/nsswitch.files
    Пример файла конфигурации, в котором используется только источник "files".
    /etc/nsswitch.nis
    Пример файла конфигурации, в котором используются источники "files" и "nis".
    /etc/nsswitch.nisplus
    Пример файла конфигурации, в котором используются источники "files" и "nisplus".
    /etc/nsswitch.ldap
    Пример файла конфигурации, в котором используются источники "files" и "ldap".
    /etc/nsswitch.dns
    Пример файла конфигурации, в котором используются источники "files" и "dns" (но только для hosts:).

    ССЫЛКИ

    ldap(1), nis+(1), passwd(1), automount(1M), ifconfig(1M), rpc.bootparamd(1M), rpc.nisd(1M), sendmail(1M), ethers(3SOCKET), getgrnam(3C), gethostbyname(3NSL), getipnodebyname(3SOCKET), getnetbyname(3SOCKET), getnetgrent(3C), getprotobyname(3SOCKET), getpublickey(3NSL), getpwnam(3C), getrpcbyname(3NSL), getservbyname(3SOCKET), getspnam(3C), netdir(3NSL), secure_rpc(3NSL), netconfig(4), resolv.conf(4), ypfiles(4)

    ПРИМЕЧАНИЯ

    В каждом процессе, использующем файл nsswitch.conf, этот файл читается целиком и только идин раз; если файл в дальнейшем изменяется, процесс будет продолжать использовать старую конфигурацию.

    Программы, использующие функции getXXbyYY(), не могут быть скомпонованы статически, поскольку реализация этих функций требует динамической компоновки для доступа к разделяемым библиотекам /usr/lib/nss_SSS.so.1 при выполнении.

    Использование совместно в качестве источников одной и той же базы данных служб nis и nisplus крайне не рекомендуется, поскольку обе эти службы имен создавались для хранения одной и той же информации, и поиск по базе данных может давать разные результаты в зависимости от того, какая служба имен работает на момент запроса. То же самое относится и к использованию службы ldap совместно с nis или nisplus.

    Опечатки в именах источников и баз данных допускаются и приводят к тому, что используются, скорее всего, не существующие источники и базы данных.

    Следующие функции не используют файл nsswitch.conf: fgetgrent(3C), fgetpwent(3C), fgetspent(3C), getpw(3C), putpwent(3C), shadow(4).

    Последнее изменение: 12 ноября 1999 года

    Copyleft (no c) - Fuck copyright!, 2003 В. Кравчук, OpenXS Initiative, перевод на русский язык


    Поиск по тексту MAN-ов: 




    Спонсоры:
    Inferno Solutions
    Ideco
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру