Nis linux ��� ���

Сетевая служба NIS

В сетях, поддерживающих NFS, многие ресурсы и устройства совместно используются несколькими компьютерами. Как правило, у каждого ком-пьютера есть собственные файлы конфигурации для каждого устройства и ресурса. Изменения в конфигурации ресурсов и устройств влекут за собой индивидуальное обновление файлов на каждом компьютере. Однако существует специальный сервис, Network Information Services (NIS), который обеспечивает поддержку таких файлов конфигурации для всей сети. При изменениях нужно обновлять только файлы NIS. Этот сервис работает с информацией, необходимой для решения большинства административных задач, к которым относятся регистрация пользователей и контроль доступа к сети и устройствам. Например, с помощью сервиса NIS можно сохранять, изменять и контролировать информацию о паролях, обновляя только соответствующие NIS-файлы.

NIS разработала фирма Sun Microsystems. Первоначально он назывался Sun’s Yellow. Pages (YP). NIS-файлы хранятся на сервере NIS (эти серверы до сих пор иногда называют серверами YP). Отдельные системы в сети направляют запросы на сервер NIS с помощью клиентских программ NIS. Сервер NIS хранит информацию в специальных файлах баз данных, называемых картами. Существуют Linux-версии и клиентов, и серверов NIS. Linux-клиенты NIS свободно связываются с любой сетью, где используется этот сервис.

Компакт-диск Caldera содержит ПО клиента и сервера NIS для Linux в виде RPM-пакетов, которые инсталлируются со стандартной конфигурацией. Клиент NIS инсталлируется вместе с исходной системой OpenLinux, и его можно в любое время переконфигурировать с помощью программы Lisa. Клиентские программы NIS — это ypbind (демон клиента NIS), ypwhich, ypcat, yppoll, ypmatch, yppasswd и ypset . У каждой из них есть своя man-no?aieoa, на которой подробно освещается использование программы. Серверные программы NIS — это ypserv, ypinit, yppasswdd, yppush, ypxfr и netgroup . У каждой из них тоже есть отдельная man-страница. Подробный документ HOW-TO о NIS находится в каталоге /usr/doc/HOWTO . Оглавление.

Источник

Nis linux ��� ���

Чтобы ответить на этот вопросы вы должны рассмотреть два случая:

  1. Ваша машина входит в сеть, где уже есть NIS серверы
  2. Вы пока не имеете никаких NIS серверов в сети

В первом случае, вам нужны только клиентские программы (ypbind, ypwhich, ypcat, yppoll, ypmatch). Самой важной программой является ypbind. Эта программа должна быть запущена всегда, она должна всегда быть в списке процессов. Эта программа является демоном и должна запускаться при старте системы (например из файлов /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local). Как только демон ypbind запущен в вашей системе, она становится клиентом NIS.

Во втором случае, если вы не имеете NIS серверов, то вам таже понадобится и NIS сервер (программа обычно называется ypserv). Секция Установка Сервера NIS описывает как установить сервер NIS на вашей Linux машине, используя реализацию «ypserv» авторов Peter Eriksson и Thorsten Kukuk. Заметим что начиная с версии 0.14 данная реализация поддерживает концепцию мастер-подчиненный о которой мы говорили в секции 4.1.

Имеется также другая свободная реализация сервера NIS, называемая «yps», которую написал Tobias Reber из Germany и которая не поддерживает концепцию мастер-подчиненный и имеет другие ограничения и уже давно не поддерживается.

Системная библиотека «/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 может быть получен отсюда:

После того как вы успешно скомпилировали программное обеспечение, вы готовы установить его. Наилучшее место для демона ypbind — это каталог /usr/sbin. Некоторые люди могу сказать вам, что вам не нужен ypbind в системе с NYS. Это неверно. Он нужен для ypwhich и ypcat.

Разумеется вы должны устанавливать демон с правами суперпользователя root. Другие программы (ypwhich, ypcat, yppasswd, yppoll, ypmatch) должны быть в каталогах доступных всем пользователям, обычно в /usr/bin.

Новые версии ypbind имеют файл с настройками, называемый /etc/yp.conf. С помощью него вы можете настроить NIS сервер — для подробностей смотрите страницу руководства man ypbind(8). Это файл вам также понадобится для NYS. Пример:

Хорошо бы протестировать ypbind перед тем как включить его в работу при старте системы. Для тестирования ypbind надо сделать следующее:


    Убедитесь, что вы задали имена YP-доменов. Если вы это не сделали, то выполните команду

ВАЖНО: Если вы пропустите процедуру тестирования, то убедитесь что вы задали имя домена и создали каталог

Для проверки корректности установки имени домена, используйте /bin/ypdomainname из yp-tools 2.2. Эта программа использует функцию yp_get_default_domain(), которая более ограничена. Она не позволяет например задавать имя домена «(none)», которое устанавливается по умолчанию в Linux и может создать большое количество проблем.

Если тест работает, то вы можете теперь захотеть изменить ваши файлы старта системы таким образом, чтобы ypbind запускался во время загрузки и ваша система становилась клиентом NIS. Убедитесь, что имя домена установлено перед тем как запускать ypbind.

Хорошо. Теперь перегрузите машину и смотрите сообщения, выдаваемые при загрузке, чтобы увидеть, что ypbind действительно запустился.

Для поиска узлов вы должны установить (или добавить) запись «nis» в строку lookup order в файле /etc/host.conf. Пожалуйста прочтите станицу руководства man «resolv+(8)» для подробностей.

Добавьте следующую строку в файл /etc/passwd на машинах NIS-клиентах:

Например, для того, чтобы разрешить вход в систему только пользователям miquels, dth и ed, и всем членам сетевой группы sysadmin, но при этом чтобы была доступна информация о всех других пользователях, используйте:

Сетевая группа может выглядеть так

Все что требуется — это файл с настройками 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».

glibc использует «традиционную NIS», так что вам нужно просто запустить ypbind. Файл с настройками Переключателя Служб Имен (/etc/nsswitch.conf) должен быть корректно установлен. Если вы используете режим compat для passwd, shadow или group, вы должны добавить «+» в конец этих файлов и вы можете использовать возможность добавления/исключения пользователей. Настройка точно такая же как в Solaris 2.x.

Файл Переключателя Служб Имен /etc/nsswitch.conf определяет порядок поиска, который выполняется когда требуется определенный кусок информации, также как файл /etc/host.conf, который определяет способ выполнения поиска узлов. Например, строка

Хороший файл /etc/nsswitch.conf для NIS это:

Теневые пароли через NIS всегда плохая идея. Вы теряете безопасность, которую дают вам теневые пароли и кроме того такая возможность поддерживается только некоторыми библиотеками C в Linux. Хорошая идея в использовании теневых паролей с NIS состоит в том, чтобы поместить в /etc/shadow только локальных системных пользователей. Удалите записи о пользователях NIS из базы данных теневых паролей или поместите пароли обратно в файл /etc/passwd. Вы можете использовать теневой пароль для пользователя root и обычный пароль для пользователя NIS. Это будет работать с любым клиентом NIS. Linux

Только библиотека GNU C 2.x в Linux поддерживает теневые пароли через NIS. Linux libc5 скомпилированная с NYS также имеет возможности для этого. Но код в ней плохо работает в некоторых случаях и может работать не всегда корректно.

Solaris не имеет поддержку теневых паролей через NIS.

Источник

Глава 13. Сетевая информационная система (NIS)

Когда Вы запускаете локальную вычислительную сеть, Ваша цель обеспечить пользователям среду, которая делает сеть простой. Важной частью этого является синхронизация данных типа учетных записей пользователей между всеми машинами. Мы видели, что для поиска имени хоста существует мощный и сложный сервис DNS. Для других задач нет такого специализированного сервиса. Кроме того, если Вы управляете маленькой LAN без выхода в Internet, устанавливать DNS иногда не оправдано.

Поэтому фирма Sun разработала Network Information System (NIS). NIS обеспечивает универсальные средства доступа к базе данных, которая может использоваться, например, чтобы распределять информацию, содержащуюся в файлах passwd и groups на все компьютеры в Вашей сети. Точно так же Вы можете использовать NIS, чтобы распределить информацию о hostname из файла /etc/hosts на все машины в сети.

NIS основан на RPC, включает сервер, клиентскую библиотеку и несколько административных инструментальных средств. Первоначально NIS был назван желтыми страницами или YP ( Yellow Pages), это название все еще используется, чтобы обратиться к нему. К сожалению, это имя является маркой компании British Telecom, которая требовала, чтобы Sun отказалась от его использования. Тем не менее, YP остался префиксом в именах команд, относящихся к NIS таких, как ypserv и ypbind.

Сегодня NIS доступен фактически для всех Unix, и имеются свободные реализации. BSD Net-2 был основан на публичной версии, выпущенной Sun. Код клиентской библиотеки из этого релиза долго присутствовал в Linux libc , а административные программы были перенесены в Linux Swen ThЭmmler. Сервер NIS в публичной версии отсутствовал.

Peter Eriksson разработал новую версию под именем NYS. Она поддерживает как NIS, так и Sun NIS+. NYS не только обеспечивает набор инструментальных средств NIS и сервер, но также добавляет целый набор новых библиотечных функций, которые должны компилироваться в libc , если Вы желаете использовать этот пакет. Это включает новую схему конфигурации преобразования имен, которая заменяет текущую схему, использующую host.conf .

GNU libc, известная как libc6 , в сообществе Linux, включает модифицированную версию традиционной поддержки NIS, разработанную Thorsten Kukuk. Она поддерживает все библиотечные функции NYS и также использует расширенную схему конфигурации NYS. Вам все еще нужны инструментальные средства и сервер, но использование GNU libc избавляет от проблем с библиотеками.

Эта глава в основном рассматривает поддержку NIS в GNU libc . Для двух других пакетов приведенные здесь инструкции тоже могут пригодиться. Подробнее о вопросе можно узнать в NIS-HOWTO, кроме того на английском языке есть книга Managing NFS and NIS (автор Hal Stern, издательство O’Reilly).

Знакомство с NIS

NIS хранит информацию базы данных в файлах карт ( maps), которые содержат пары ключ=значение. Примером такой пары является имя пользователя и зашифрованная форма его пароля для входа в систему. Карты хранятся на центральном главном компьютере, управляющем сервером NIS, откуда клиенты могут брать информацию через различные обращения RPC. Часто карты хранятся в DBM-файлах. DBM это простая библиотека управления базами данных, которая использует методы хеширования, чтобы ускорить операции поиска. Имеется свободная реализация DBM из проекта GNU, названная gdbm, которая является частью большинства дистрибутивов Linux.

Карты обычно генерируются из текстовых файлов типа /etc/hosts или /etc/passwd . Для некоторых файлов будет создано несколько карт, по одной для каждого типа ключа поиска. Например, Вы можете искать в файле hosts имя машины или ее IP-адрес. Соответственно, из этого файла будут получены две NIS-карты hosts.byname и hosts.byaddr . Таблица 13-1 перечисляет наиболее распространенные карты и файлы, из которых они сгенерированы.

Таблица 13-1. Стандартные карты NIS и соответствующие им файлы

Источник

Nis linux ��� ���

Network Information Service (NIS) is a protocol developed by Sun to allow one to defer user authentication to a server. The server software is in the ypserv AUR package, and the client software is in the yp-tools AUR package. ypbind-mt AUR is also available, which is a multi threaded version of the client daemon.

Contents

NIS Server

Install Packages

Configuration

/etc/hosts

Add your server’s external (not 127.0.0.1) IP address to the hosts file. Make sure it is the first non-commented line in the file, yes, even above the localhost line, like so:

This is due to a peculiarity in ypinit (maybe it is a bug, maybe it is a feature), which will always add the first line in /etc/hosts to the list of ypservers.

/etc/nisdomainname

Add the domain name to /etc/nisdomainname :

/etc/ypserv.conf

Add rules to /etc/ypserv.conf for your your nis clients of this form:

For more information see man ypserv.conf .

/var/yp/Makefile

Add or remove files you would like NIS to use to /var/yp/Makefile under the «all» rule.

After that you have to build your NIS database:

Or you can do it in a more automated fashion:

If you use this way you may skip manually adding lines to /var/yp/ypservers.

/var/yp/securenets

Add rules to /var/yp/securenets to restrict access:

Be sure to comment out this line, as it gives access to anyone.

/var/yp/ypservers

Add your server to /var/yp/ypservers:

Set your domain name

Now edit the /etc/yp.conf file and add your ypserver or nis server.

Start NIS Daemons

Start/enable the following systemd units:

  • rpcbind.service
  • ypbind.service
  • ypserv.service
  • yppasswdd.service (to allow clients to change their password with passwd )

NIS Client

Install Packages

The first step is to install the tools that you need. This provides the configuration files and general tools needed to use NIS. Install yp-tools AUR ypbind-mt AUR .

Configuration

Set your domain name

You can apply this permanently by editing /etc/nisdomainname and adding:

Now edit the /etc/yp.conf file and add your ypserver or nis server.

/etc/hosts

It may be a good idea to add your NIS server to /etc/hosts

Start NIS Daemons

Start/enable the rpcbind.service and ypbind.service systemd units.

Early testing

To test the setup so far you can run the command yptest:

If it works you will, among other things, see the contents of the NIS user database (which is printed in the same format as /etc/passwd).

/etc/nsswitch.conf

To actually use NIS to log in you have to edit /etc/nsswitch.conf. Modify the lines for passwd, group and shadow to read:

And then do not forget

/etc/pam.d/passwd

To allow a user on a client machine to change their password on the server, be sure that yppasswdd.service is started/enabled on the server.

Edit /etc/pam.d/passwd on the client to add the nis parameter to password/pam_unix.so :

See section 7 of The Linux NIS HOWTO for further information on configuring NIS clients.

Attention on Systemd V235 since 10/2017 (and V239 since 06/2018, and V245 since 03/2020)

Due a problem with sandboxing on systemd-logind , any IP connections from and to the systemd-logind service are now denied. This will cause failures to log in, even though yptest works as expected, and can also cause accounts-daemon to crash outright. The basic problem is that the default /usr/lib/systemd/system/systemd-logind.service file that ships with systemd specifies IPAddressDeny=any , and this prevents it from communicating with the NIS server at login. Moreover, since V239, that file also specifies RestrictAddressFamilies=AF_UNIX AF_NETLINK , dropping AF_INET AF_INET6 from the list.

There are a few possible solutions:

  • Whitelist the address or address range of your NIS server:

This can be done by creating a new .conf file within the /etc/systemd/system/systemd-logind.service.d/ , with these lines (the following allows connections from 10.0.*.* , edit as appropriate):

This survives a reboot and updates of the systemd toolchain. It also avoid having to open your system to any IP address.

  • Override the system’s default systemd-logind.service with a modified local version:

and comment out the line IPAddressDeny=any to read # IPAddressDeny=any . As of V239, you will also need to add AF_INET AF_INET6 to the RestrictAddressFamilies=AF_UNIX AF_NETLINK line.

This solution survives an update of the systemd toolchain and keeps working after a reboot. It does however override all settings in the unit file supplied with systemd , which may cause issues down the track if other unrelated settings are changed upstream. It also opens up access to any IP address, which is not recommended.

  • Modify the system’s default systemd-logind.service directly:

Works, but not a recommended solution since it will not survive an update of the systemd toolchain:

and comment out the line IPAddressDeny=any to read # IPAddressDeny=any . As of V239, you will also need to add AF_INET AF_INET6 to the RestrictAddressFamilies=AF_UNIX AF_NETLINK line.

Note that this also opens up access to any IP address, which is not recommended.

Источник

Читайте также:  Javascript windows по имени
Оцените статью