Библиотека сайта rus-linux.net
6. Что нужно сделать для настройки NIS?
6.1 Определите что вам нужно: сервер, подчиненный сервер или клиент.
Чтобы ответить на этот вопросы вы должны рассмотреть два случая:
- Ваша машина входит в сеть, где уже есть NIS серверы
- Вы пока не имеете никаких NIS серверов в сети
Во втором случае, если вы не имеете NIS серверов, то вам таже понадобится и NIS сервер (программа обычно называется ypserv). Секция Установка Сервера NIS описывает как установить сервер NIS на вашей Linux машине, используя реализацию "ypserv" авторов Peter Eriksson и Thorsten Kukuk. Заметим что начиная с версии 0.14 данная реализация поддерживает концепцию мастер-подчиненный о которой мы говорили в секции 4.1.
Имеется также другая свободная реализация сервера NIS, называемая "yps", которую написал Tobias Reber из Germany и которая не поддерживает концепцию мастер-подчиненный и имеет другие ограничения и уже давно не поддерживается.
6.2 Программное обеспечение
Системная библиотека "/usr/lib/libc.a" (версии 4.4.2 и выше) или динамическая библиотека "/lib/libc.so.x" содержит все необходимые системные вызовы для успешной компиляции клиента и сервера NIS. Для библиотеки GNU C 2 (glibc 2.x), также нужна библиотека /lib/libnsl.so.1.
Некоторые люди говорят, что NIS работает только с "/usr/lib/libc.a" версии 4.5.21 м выше, так что если вы хотите, чтобы все было хорошо сразу, не используйте старые версии. Клиент NIS может быть получен отсюда:
Site Directory File Name
ftp.kernel.org /pub/linux/utils/net/NIS yp-tools-2.2.tar.gz
ftp.kernel.org /pub/linux/utils/net/NIS ypbind-mt-1.4.tar.gz
ftp.kernel.org /pub/linux/utils/net/NIS ypbind-3.3.tar.gz
ftp.kernel.org /pub/linux/utils/net/NIS ypbind-3.3-glibc5.diff.gz
ftp.uni-paderborn.de /linux/local/yp yp-clients-2.2.tar.gz
Когда вы получили клиента, пожалуйста следуйте инструкциям, которые
идут с клиентом. yp-clients 2.2 может использоваться как с libc4 так и
с libc5 до версии 5.4.20. Для libc 5.4.21 и glibc 2.x нужны yp-tools
версии 1.4.1 или выше. Новые yp-tools 2.2 должны работать с любым
Linux libc. Так как в более ранних версиях libc, в коде NIS был
найдена ошибка, вам не нужны версии libc 5.4.21-5.4.35. Используйте
libc 5.4.36 или выше вместо них или большинство программ YP работать
не будут. ypbind 3.3 также будет работать со всеми библиотеками. Если
вы используете gcc 2.8.x или выше, egcs или glibc 2.x, вы должны
добавить исправления ypbind-3.3-glibc5.diff для ypbind 3.3. Пожалуйста
никогда не используйте ypbind от yp-clients 2.2. ypbind-mt - это новый
демон, использующий нити (треды). Ему нужно ядро Linux версии 2.2 и
glibc 2.1 или выше.
6.3 Демон ypbind
После того как вы успешно скомпилировали программное обеспечение, вы готовы установить его. Наилучшее место для демона ypbind - это каталог /usr/sbin. Некоторые люди могу сказать вам, что вам не нужен ypbind в системе с NYS. Это неверно. Он нужен для ypwhich и ypcat.
Разумеется вы должны устанавливать демон с правами суперпользователя root. Другие программы (ypwhich, ypcat, yppasswd, yppoll, ypmatch) должны быть в каталогах доступных всем пользователям, обычно в /usr/bin.
Новые версии ypbind имеют файл с настройками, называемый /etc/yp.conf. С помощью него вы можете настроить NIS сервер - для подробностей смотрите страницу руководства man ypbind(8). Это файл вам также понадобится для NYS. Пример:
ypserver voyager
ypserver defiant
ypserver ds9
Если система может получить имена узлов (отрезолвить) без NIS, то вы
можете использовать имя, в противном случае вы должны использовать IP
адрес. ypbind 3.3 имеет ошибку и будет использовать только последнюю
запись (запись ypserver ds9 в примере выше). Все другие записи
игнорируются. ypbind-mt управляет записями корректно и использует ту,
сервер прописанный в которой отвечает первым.
Хорошо бы протестировать ypbind перед тем как включить его в работу при старте системы. Для тестирования ypbind надо сделать следующее:
- Убедитесь, что вы задали имена YP-доменов. Если вы это не сделали,
то выполните команду
где nis.domain должен быть некоторой строкой обычно _НЕ_ соответствующей имени DNS-домена вашей машины! Причина этого в том, что при одинаковых именах доменов, хакерам снаружи предоставляется маленькая возможность получить базу данных паролей с ваших серверов NIS. Если вы не знаете какое имя NIS-домена в вашей сети, спросите у вашего администратора системы/сети./bin/domainname nis.domain
- Запустите "/usr/sbin/portmap", если он уже не запущен.
- Создайте каталог "/var/yp", если он не существует.
- Запустите "/usr/sbin/ypbind"
- Используйте команду "rpcinfo -p localhost" чтобы проверить, что
ypbind доступа регистрация своей службы с portmapper. Вы должны
получить:
илиprogram vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind
В зависимости от версии ypbind которую вы используете.program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind
- Вы можете также запустить "rpcinfo -u localhost ypbind". Эта
команда должна выдать следующее:
илиprogram 100007 version 2 ready and waiting
в зависимости от версии ypbind, которая установлена. Важным является только сообщение "version 2".program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting
ВАЖНО: Если вы пропустите процедуру тестирования, то убедитесь что вы задали имя домена и создали каталог
/var/yp
Данный каталог ДОЛЖЕН существовать для того, чтобы запуск ypbind был
успешен.
Для проверки корректности установки имени домена, используйте /bin/ypdomainname из yp-tools 2.2. Эта программа использует функцию yp_get_default_domain(), которая более ограничена. Она не позволяет например задавать имя домена "(none)", которое устанавливается по умолчанию в Linux и может создать большое количество проблем.
Если тест работает, то вы можете теперь захотеть изменить ваши файлы старта системы таким образом, чтобы ypbind запускался во время загрузки и ваша система становилась клиентом NIS. Убедитесь, что имя домена установлено перед тем как запускать ypbind.
Хорошо. Теперь перегрузите машину и смотрите сообщения, выдаваемые при загрузке, чтобы увидеть, что ypbind действительно запустился.
6.4 Установка клиента NIS используя традиционоык OIS
Для поиска узлов вы должны установить (или добавить) запись "nis" в строку lookup order в файле /etc/host.conf. Пожалуйста прочтите станицу руководства man "resolv+(8)" для подробностей.
Добавьте следующую строку в файл /etc/passwd на машинах NIS-клиентах:
+::::::
Вы можете также использовать символы + и - для добавления/исключения
или изменения пользователей. Если вы хотите исключить пользователя
guest, то просто добавьте -guest в файл /etc/passwd file. Вы хотите
использовать другой интерпретатор команд (например ksh) для
пользователя "linux"? Нет проблем, просто добавьте
"+linux::::::/bin/ksh" (без кавычек) в файл /etc/passwd. Поля, которые
вам не нужно изменять вы должны оставить пустыми. Вы можете также
использовать Netgroups для управления пользователем.
Например, для того, чтобы разрешить вход в систему только пользователям miquels, dth и ed, и всем членам сетевой группы sysadmin, но при этом чтобы была доступна информация о всех других пользователях, используйте:
+miquels:::::::
+ed:::::::
+dth:::::::
+@sysadmins:::::::
-ftp
+:*::::::/etc/NoShell
Заметим, что в Linux вы можете также перекрыть поле пароля, как мы
делали в этом примере. Мы также удалили имя "ftp", так что оно стало
неизвестным и anonymous ftp работать не будет.
Сетевая группа может выглядеть так
sysadmins (-,software,) (-,kukuk,)
ВАЖНО: Возможность работы с сетевой группой реализуется начиная с libc
4.5.26. Если вы имеете версию libc младше 4.5.26, каждый пользователь
в базе данных паролей NIS может иметь доступ к вашей linux машине,
если вы запустили "ypbind" !
6.5 Установка клиента NIS используя NYS
Все что требуется - это файл с настройками NIS (/etc/yp.conf) с корректной информацией о сервере (серверах). Также, должен быть корректно установлен файл с настройками Переключателя Служб Имен (/etc/nsswitch.conf).
Вы должны установить ypbind. Это не требует libc, но требуется для утилит NIS(YP).
Если вы желаете использовать возможности добавления/удаления пользователя (+/-guest/+@admins), вы должны использовать "passwd: compat" и "group: compat" в файле nsswitch.conf. Заметим, что там нет строчки "shadow: compat"! Вы должны использовать "shadow: files nis" в этом случае.
Исходные тексты NYS являются частью исходных текстов libc 5. Когда вы запускаете configure, сперва скажите "NO" на вопрос "Values correct", затем "YES" на вопрос "Build a NYS libc from nys".
6.6 Установка клиента NIS Client используя glibc 2.x
glibc использует "традиционную NIS", так что вам нужно просто запустить ypbind. Файл с настройками Переключателя Служб Имен (/etc/nsswitch.conf) должен быть корректно установлен. Если вы используете режим compat для passwd, shadow или group, вы должны добавить "+" в конец этих файлов и вы можете использовать возможность добавления/исключения пользователей. Настройка точно такая же как в Solaris 2.x.
6.7 Файл nsswitch.conf
Файл Переключателя Служб Имен /etc/nsswitch.conf определяет порядок поиска, который выполняется когда требуется определенный кусок информации, также как файл /etc/host.conf, который определяет способ выполнения поиска узлов. Например, строка
hosts: files nis dns
говорит, что функции поиска узлов должны сперва смотреть в локальный
файл /etc/hosts, затем производить поиск через NIS и наконец
использовать службу доменных имен (/etc/resolv.conf и демон named), и
если нужный узел не найден, возвратить ошибку. Данный файл должен быть
доступен на чтение для любого пользователя! Вы можете найти больше
информации на станице руководства nsswitch(5) или nsswitch.conf(5).
Хороший файл /etc/nsswitch.conf для NIS это:
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the /var/db databases
# [NOTFOUND=return] Stop searching if not found so far
#
passwd: compat
group: compat
# For libc5, you must use shadow: files nis
shadow: compat
passwd_compat: nis
group_compat: nis
shadow_compat: nis
hosts: nis files dns
services: 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
netgroup: nis
bootparams: nis [NOTFOUND=return] files
publickey: nis [NOTFOUND=return] files
automount: files
aliases: nis [NOTFOUND=return] files
passwd_compat, group_compat и shadow_compat поддерживаются только
glibc 2.x. Если в файле /etc/nsswitch.conf нет правил для shadow,
glibc будет использовать для поиска правило passwd. Для glibc имеет
несколько больше модулей для поиска таких как hesoid. Для подробностей
смотрите документацию на glibc.
6.8 Теневые пароли в NIS
Теневые пароли через NIS всегда плохая идея. Вы теряете безопасность, которую дают вам теневые пароли и кроме того такая возможность поддерживается только некоторыми библиотеками C в Linux. Хорошая идея в использовании теневых паролей с NIS состоит в том, чтобы поместить в /etc/shadow только локальных системных пользователей. Удалите записи о пользователях NIS из базы данных теневых паролей или поместите пароли обратно в файл /etc/passwd. Вы можете использовать теневой пароль для пользователя root и обычный пароль для пользователя NIS. Это будет работать с любым клиентом NIS.
- Linux
Только библиотека GNU C 2.x в Linux поддерживает теневые пароли через NIS. Linux libc5 скомпилированная с NYS также имеет возможности для этого. Но код в ней плохо работает в некоторых случаях и может работать не всегда корректно.
- Solaris
Solaris не имеет поддержку теневых паролей через NIS.
- PAM
PAM не поддерживает теневых паролей через NIS, особенно pam_pwdb/libpwdb. Это большая проблема для пользователей RedHat 5.x. Если вы имеете glibc и PAM, вам нужно изменить значения /etc/pam.d/*. Замените все правила pam_pwdb на pam_unix_* модули. Но из-за ошибки в pam_unix_auth.so это не всегда работает.
Пример файла /etc/pam.d/login:
Для auth вам нужно использовать модуль pam_unix_auth.so, для account модуль pam_unix_acct.so, для password модуль pam_unix_passwd.so и для session модуль pam_unix_session.so.#%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix_auth.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_unix_passwd.so session required /lib/security/pam_unix_session.so
Next Previous Contents