The Linux NIS(YP)

Щоб відповісти на це питання, ви повинні розглянути два випадки:

  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, що називається "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 може бути отриманий звідси: Коли ви отримали клієнта, будь ласка, дотримуйтесь інструкцій, які йдуть з клієнтом. 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 або вище.

Після того, як ви успішно скомпілювали програмне забезпечення, ви готові встановити його. Найкраще місце для демона 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-доменів. Якщо ви це не зробили, то виконайте команду, де nis.domain повинен бути деяким рядком зазвичай _НЕ_ відповідного імені DNS-домена вашої машини! Причина цього в тому, що при однакових іменах доменів хакерам зовні надається невелика можливість отримати базу даних паролів з ваших серверів NIS. Якщо ви не знаєте якесь ім'я NIS-домена у вашій мережі, запитайте у вашого адміністратора системи/мережі.
  • Запустіть"/usr/sbin/portmap", якщо його вже не запущено.
  • Створіть каталог "/var/yp", якщо він не існує.
  • Запустіть "/usr/sbin/ypbind"
  • Використовуйте команду "rpcinfo -p localhost", щоб перевірити, що ypbind доступу реєструє свою службу з portmapper. Ви повинні отримати: або Залежно від версії ypbind, яку ви використовуєте.
  • Ви також можете запустити "rpcinfo -u localhost ypbind". Ця команда повинна видати наступне: або в залежності від версії ypbind, яка встановлена. Важливим є лише повідомлення "version 2".
Після цього вам має бути доступним використання клієнтських програм NIS, таких як ypcat, і т.д. Наприклад, "ypcat passwd.byname" дасть вам базу даних паролів NIS.

ВАЖЛИВО: Якщо ви пропустите процедуру тестування, то переконайтеся, що ви задали ім'я домену і створили каталог

Даний каталог ПОВИНЕН існувати для того, щоб запуск ypbind був успішним.

Для перевірки правильності встановлення імені домену, використовуйте /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-клієнтах:

Ви також можете використовувати символи + і - для додавання/виключення або зміни користувачів. Якщо ви хочете виключити користувача guest, просто додайте -guest у файл /etc/passwd file. Ви хочете використовувати інший інтерпретатор команд (наприклад, ksh) для користувача "linux"? Немає проблем, просто додайте "+linux. /bin/ksh" (без лапок) у файл /etc/passwd. Поля, які вам не потрібно змінювати, ви повинні залишити порожніми. Ви також можете використовувати Netgroups для керування користувачем.

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

Зауважимо, що в Linux ви також можете перекрити поле пароля, як ми робили в цьому прикладі. Ми також видалили ім'я "ftp", тому воно стало невідомим і anonymous ftp працювати не буде.

Мережева група може виглядати так

ВАЖЛИВО: Можливість роботи з мережевою групою реалізується починаючи з libc 4.5.26. Якщо ви маєте версію libc молодше 4.5.26, кожен користувач бази даних паролів NIS може мати доступ до вашої linux машині, якщо ви запустили "ypbind" !

Все що потрібно - це файл із налаштуваннями 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/hosts, потім шукати через NIS і нарешті використовувати службу доменних імен (/etc/resolv.conf і демон named), і якщо потрібний вузол не знайдено, повернути помилку. Цей файл має бути доступний для читання для будь-якого користувача! Ви можете знайти більше інформації на станиці посібника nsswitch(5) або nsswitch.conf(5).

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

passwd_compat, group_compat та shadow_compat підтримуються лише glibc 2.x. Якщо у файлі /etc/nsswitch.conf немає правил для shadow, glibc буде використовувати для пошуку правило passwd. Для glibc має більше модулів для пошуку таких як hesoid. Докладніше дивіться документацію на glibc.

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

Лише бібліотека GNU C 2.x у Linux підтримує тіньові паролі через NIS. Linux libc5 скомпільована з NYS також має можливості для цього. Але код у ній погано працює у деяких випадках і може працювати не завжди коректно.

Solaris немає підтримки тіньових паролів через NIS.