ИМЯ¶
nsswitch.conf - Системные
базы данных
и файл с
настройками
для
диспетчера
службы имен
ОПИСАНИЕ¶
Для
корректной
работы в
локальном
окружении
необходима
различная
настройка
функций
библиотеки
языка C.
Традиционно
это делалось
с помощью
файлов
(таких как `/etc/passwd'),
но со
временем
стали
популярны
другие
службы имен
(такие как Network Information
Service (NIS) и Domain Name Service (DNS)) и они
были внесены
в библиотеку
C, причем
обычно
использовался
фиксированный
порядок
поиска.
Linux-версия libc5 с
поддержкой NYS
(NYS - это
специальная
доработка libc5,
которая
позволяет
работать с NIS.
Подробнее об
этом читайте
NIS-HOWTO. -- Прим. пер.), а
также
библиотека GNU C
2.x (libc.so.6)
используют
более
корректный
метод
решения этой
проблемы.
Этот метод
был
разработан
по образцу
того метода,
что
использован
в библиотеке
C, написанной
в Sun Microsystems для Solaris 2. Мы
используем
их название
и зовем
данную схему
"Name Service Switch", NSS
(Диспетчер
Службы Имен).
Базы данных,
в которых
ищется
информация,
и порядок их
просмотра
задаются в
файле
/etc/nsswitch.conf.
В NSS можно
использовать
следующие
базы данных:
- aliases
- Почтовые
псевдонимы,
используемые
программой
sendmail(8). В данный
момент
игнорируются.
- ethers
- Номера ethernet.
- group
- Группы
пользователей,
с которыми
работает
функция getgrent(3).
- hosts
- Имена
хостов и
номера
(имеются в
виду
IP-адреса? --
Прим. пер.),
используемые
функцией
gethostbyname(3) и
другими, ей
подобными.
- netgroup
- Список
хостов и
пользователей
сети,
используемый
для правил
доступа.
Библиотеки C
до версии glibc 2.1
поддерживают
сетевые
группы
только
посредством
NIS.
- network
- Имена и
номера
сетей,
используемые
функциями
getnetent(3).
- passwd
- Пароли
пользователей,
используемые
функциями
getpwent(3).
- protocols
- Сетевые
протоколы,
используемые
функциями
getprotoent(3).
- publickey
- Открытые
и секретные
ключи для Secure_RPC,
которая
используется
в NFS и NIS+.
- rpc
- Имена и
номера
вызовов
удаленных
процедур,
используемых
функцией
getrpcbyname(3) и
другими
похожими
функциями.
- services
- Сетевые
службы,
используемые
функциями
getservent(3).
- 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'.
- * Реакция
на поиск
результата,
такая как
`[NOTFOUND=return]'.
Для libc5 с NYS
допустимы
спецификации
служб `files', `nis' и `nisplus'.
Для hosts вы
можете в
качестве
дополнительной
службы
указать `dns', а
для passwd и group, но не
для shadow -- `compat'.
При
использовании
glibc у вас должен
быть файл
/lib/libnss_SERVICE.so.X для
каждой
службы SERVICE,
которую вы
используете.
При
стандартной
установке
можно
использовать
`files', `db', `nis' и `nisplus'. Для hosts
вы можете в
качестве
дополнительной
службы
указать `dns', для
passwd, group и shadow -- `compat'. Эти
службы не
будут
использоваться
libc5 с NYS. Номер
версии
X это 1
для glibc 2.0 и 2 для glibc 2.1.
Второй
элемент в
спецификации
предоставляет
пользователю
значительно
более точный
контроль над
процессом
поиска.
Элементы-действия
пишутся
между двумя
именами
служб и
заключаются
в квадратные
скобки.
Основная
форма записи
такова:
`[' ( `!'? СОСТОЯНИЕ `='
ДЕЙСТВИЕ )+ `]'
где
- СОСТОЯНИЕ
=> success | notfound | unavail | tryagain
- ДЕЙСТВИЕ
=> return | continue
Регистр букв
не важен.
СОСТОЯНИЕ --
это
результат
вызова
функции
поиска
заданной
службы. Оно
может
принимать
значения:
- success
- Нужная
запись
найдена и
ошибок не
произошло.
Для этого
состояния
действием
по
умолчанию
является `return'.
- notfound
- Процесс
поиска
работает
успешно, но
нужная
запись не
была
найдена. Для
этого
состояния
действием
по
умолчанию
является `continue'.
- unavail
- Служба
недоступна.
Это может
означать,
что
недоступен
нужный файл,
или DNS-сервер
или что нет
допустимых
запросов.
Для этого
состояния
действием
по
умолчанию
является `continue'.
- tryagain
- Служба
временно
недоступна.
Это может
означать,
что
какой-либо
файл
заблокирован
или что в
данный
момент
сервер не
может
принять
больше
соединений.
Для этого
состояния
действием
по
умолчанию
является `continue'.
Взаимодействие
с
синтаксисом
+/- (режим compat)¶
Linux libc5 без NYS не
содержит
диспетчера
службы имен,
но
предоставляет
пользователю
некоторую
возможность
управления
процедурой
поиска. В
файле
/etc/passwd вы
можете
сделать
записи вида
+пользователь
или
+@сетевая_группа
(что
включает
заданного
пользователя
из карты NIS passwd),
-пользователь
или
-@сетевая_группа
(что
исключает
заданного
пользователя)
и
+ (что
включает
каждого
пользователя,
не считая
исключенных,
из карты NIS). Так
как обычно
просто
помещают
+ в
конец файла
/etc/passwd, чтобы
включить
всех
пользователей
из NIS, то
диспетчер в
этом случае
предоставляет
более
быструю
альтернативу
(`passwd: files nis'), которая
не требует
одиночной
записи
+ в
файле
/etc/passwd,
/etc/group
и
/etc/shadow. Если
этого
недостаточно,
то служба NSS `compat'
предоставляет
полную
семантику +/-.
По
умолчанию,
источником
является `nis', но
он может
быть
переназначен,
если задать
`nisplus' как
источник для
псевдо-баз
данных
passwd_compat,
group_compat и
shadow_compat. Эти
псевдо-базы
данных
доступны
только в
библиотеке GNU C
Library.
ФАЙЛЫ¶
Служба,
называемая
SERVICE,
реализуется
через
разделяемую
объектную
библиотеку,
которая
называется
libnss_SERVICE.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
такой
проблемы
нет.
ПЕРЕВОД¶
Перевёл с
английского
Виктор
Вислобоков
<corochoone@perm.ru> 2004