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 этой проблемы нет.