Документация по LinuxLinuxDoc.Ru 🔍

nsswitch.conf - конфигурационный файл cистемных баз данных и переключателя сервисов имен

НАЗВАНИЕ
nsswitch.conf - конфигурационный файл cистемных баз данных
и переключателя сервисов имен

ОПИСАНИЕ
Многие функции в бибилиотеках C должны быть настроены так,
чтобы без сбоев работать в локальной среде. Раньше это
делалось с помощью соответствующих файлов (например,
`/etc/passwd'), но потом появились другие сервисы имен
(такие, как Network Information Service (NIS) и Domain
Name Service (DNS)), ставшие популярными и включенные в
библиотеки C.

В Linux libc5 есть поддержка NYS, а в glibc 2.x
(libc.so.6) содержится более простое и эффективное решение
этой проблемы. Оно было реализовано на основе метода,
использованного Sun Microsystems в библиотеке C Solaris 2.
Мы последовали этому примеру и назвали эту схему "Name
Service Switch" (NSS). Источники "баз данных" и порядок их
просмотра задаются в файле /etc/nsswitch.conf.

В NSS поддерживаются следующие базы данных:

aliases
(почтовые алиасы (псевдонимы), используемые send-
mail(8),которые в настоящее время игнорируются);

ethers (ethernet-адреса);

group (группы пользователей, с которыми работает функция
getgrent(3));

hosts (имена и адреса машин, используемые функцией geth-
ostbyname(3) и ей подобными);

netgroup
(общесетевой список машин и пользователей,
используемый для определения прав доступа к
системе. Библиотеки C до glibc 2.1 поддерживали
эти группы только для NIS);

network
(имена и адреса сетей, используемые функцией getne-
tent(3));

passwd (пароли пользователей, обрабатываемые функцией get-
pwent(3));

protocols
(сетевые протоколы, используемые функцией getpro-
toent(3));

publickey
(открытые и закрытые ключи для Secure_RPC,
используемые NFS и NIS+);

rpc (имена и номера удаленных вызовов процедур RPC,
используемые функцией getrpcbyname(3) и ей
подобными);

services
(сетевые службы, работающие с функцией getser-
vent(3));

shadow (скрытые (shadow) пароли пользователей,
обрабатываемые функцией getspnam(3)).

Файл /etc/nsswitch.conf может выглядеть примерно так
(такое содержимое используется и по умолчанию, если файл
/etc/nsswitch.conf отсутствует):

passwd: compat
group: compat
shadow: compat

hosts: dns [!UNAVAIL=return] files
networks: nis [NOTFOUND=return] files
ethers: nis [NOTFOUND=return] files
protocols: nis [NOTFOUND=return] files
rpc: nis [NOTFOUND=return] files
services: nis [NOTFOUND=return] files

Первая колонка - это название базы данных. Остальная часть
строки описывает процесс поиска данных. Этот процесс
можно задать для каждой базы данных в отдельности.

Описание конфигурации каждой базы данных может содержать
два типа элементов:
* Название сервиса, например, `files', `db' или `nis'.
* Ответ на результат работы сервиса, например, `[NOT-
FOUND=return]'.

В libc5 с NYS разрешены следующие названия сервисов:
`files', `nis' и `nisplus'. Для имен машин можно
использовать сервис `dns', для passwd и group - `compat'
(но не для shadow).

В glibc, у Вас должен быть файл /lib/libnss_СЕРВИС.so.X
для каждого СЕРВИСА, с которым Вы работаете. Вы увидите
`files', `db', `nis' и `nisplus'. Для имен машин можно
использовать сервис `dns', для passwd, group и shadow -
`compat'. Эти сервисы не будут использоваться в libc5 с
NYS. Номер версии X равен 1 в glibc 2.0 и 2 в glibc 2.1.

Второй вариант элемента в описании конфигурации позволяет
более гибко контролировать процесс поиска данных. Элементы
действий помещаются между двумя названиями сервисов и
заключаются в квадратные скобки. Общая форма элемента
действий:

`[' ( `!'? СТАТУС `=' ДЕЙСТВИЕ )+ `]'

where

СТАТУС => success | notfound | unavail | tryagain
ДЕЙСТВИЕ => return | continue

Регистр написания ключевых слов неважен. СТАТУС - это
результат вызова соответствующей функции заданного
сервиса:

success
Ошибки не произошло, и возвращено искомое значение.
Стандартное действие для этого статуса - `return'.

notfound
Поиск проведен успешно, но искомое значение не
найдено. Стандартное действие - `continue'.

unavail
Сервис недоступен. Это означает, что файла не
существует или, в случае DNS, сервер недоступен или
не позволяет отправлять запросы. Стандартное
действие - `continue'.

tryagain
Сервис временно недоступен. Это означает, что файл
заблокирован или сервер не может создать
соединение. Стандартное действие - `continue'.


Работа с синтаксисом +/- (режим compat)
libc5 в Linux без NYS не имеет NSS, но имеет простую
встроенную форму контроля пользовательской работы. В файле
/etc/passwd могут находиться строки в форме +пользователь
или +@сетевая_группа (включить заданного пользователя в
карту NIS passwd), -user или -@netgroup (исключить
заданного пользователя) и + (включить всех пользователей,
кроме исключаемых из карты NIS passwd). Многие помещают
один + в конце файла /etc/passwd; в этом случае NSS
предлагает более быструю альтернативу (`passwd: files
nis'), которой не нужен + в файлах /etc/passwd, /etc/group
и /etc/shadow. Если этого недостаточно, то сервис `com-
pat' NSS полностью поддерживает семантику +/-. По
умолчанию источник равен `nis', но это можно изменить,
задав `nisplus' в качестве сервиса псевдобаз данных
passwd_compat, group_compat и shadow_compat. Псевдобазы
доступны только в GNU-библиотеке C.

ФАЙЛЫ
Сервис под именем СЕРВИС включен в разделяемую библиотеку
под названием libnss_СЕРВИС.so.X; эта библиотека находится
в каталоге /lib.

/etc/nsswitch.conf файл конфигурации
/lib/libnss_compat.so.X сервис `compat' в glibc2
/lib/libnss_db.so.X сервис `db' в glibc2
/lib/libnss_dns.so.X сервис `dns' в glibc2
/lib/libnss_files.so.X сервис `files' в glibc2
/lib/libnss_hesiod.so.X сервис `hesiod' в glibc2
/lib/libnss_nis.so.X сервис `nis' в glibc2
/lib/libnss_nisplus.so.2 сервис `nisplus' в glibc 2.1

ЗАМЕЧАНИЯ
Каждому процессу, использующему nsswitch.conf, весь файл
читается один раз; если файл после этого изменить, то
процесс будет работать со старой конфигурацией.
В Solaris программы, использующие NSS, нельзя собирать
статически. В Linux этой проблемы нет.
Читать новости Linux в Telegram
Linux - nsswitch.conf - конфигурационный файл cистемных баз данных и переключателя сервисов имен
Мы в соцсетях ✉