Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Эта заметка доступна на: English  Deutsch  Francais  Portugues  Russian  Turkce  
[Frederic]
автор

Об авторе:
пишет диссертацию по информатике в INRIA. Он любит читать (Толкиена равно как и Бальзака) и слушать музыку (от Моцарта до Филипа Гласса и от Led Zeppelin до Massive Attack через Björk и Boris Vian, но старательно обходя рэп, техно и некоторые другие разновидности шума ;-)
Содержание:

Yellow Pages 2 : Сторона клиента

[Иллюстрация]

Резюме:

Предыдущая статья была введением в принципы работы желтых страниц (Yellow Pages, YPs). Здесь мы рассмотрим, как сконфигурировать вашего клиента, практический пример, показывающий, как работает клиент, и различные утилиты, которые нужны для его работы. В конце мы расскажем кое-что о NIS+.



Введение

Работа сервисов, связанных с желтыми страницами, на стороне клиента коренным образом основана на работе демона ypbind : он посылает запросы на сервер YP. Сначала мы расскажем как он работает и как его настроить. Затем, мы посмотрим как работает протокол NIS. Последняя часть статьи посвящена различным утилитам, применяемым на стороне клиента YP (yp-утилиты).

Настройка вашего клиента NIS

Единственное действие, которое надо выполнить для запуска клиента NIS на машине, - запустить демон ypbind.  

ypbind

ypbind устанавливает соединение между клиентом и сервером NIS. Это соединение можно увидеть в дериктории /var/yp/binding1 в файле, который обычно называется имя_домена.версия. Единственная поддерживаемая версия в настоящее время - версия 2. Значит, если имя моего домена NIS - "messiah", то имя файла будет messiah.2

Программа ypbind принадлежит привилегированному пользователю (т.е. root), а значит, она должна находиться в /sbin или в /usr/sbin.

При запуске, ypbind берет предписания для себя из файла /etc/yp.conf. Этот файл состоит из следующих строк:



Если этот конфигурационный файл неверен или не существует, ypbind будет делать широковещательный запрос2 по локальной сети, чтобы найти сервер NIS локального домена.

Несколько основных действий позволяют нам проверить, правильно ли сконфигурирован ypbind.

  1. создайте свой файл /etc/yp.conf ;
  2. проверьте работает ли portmap (ps aux | grep portmap). Если нет, запустите его. Эта программа связывает TCP/IP (или UDP/IP) порты компьютера с программами. Во время инициализации RPC сервера, он сообщает portmap порты, которые он слушает и номера программ, которые он хочет запускать. Когда клиент выдает RPC запрос для данного номера программы, он сначала связывается с portmap, чтобы узнать на какой порт должны посылаться RPC пакеты. Это объяснение показывает, что необходимо иметь работающий portmap перед запуском ypbind ;
  3. создайте дерикторию /var/yp ;
  4. запустите ypbind ;
  5. используйте команду rpcinfo, чтобы удостовериться в правильной работе ypbind : или вы можете попробовать: в зависимости от версии ypbind. Нам важно сообщение о версии 2.
Теперь, когда ypbind работает правильно, ваша машина стала клиентом NIS. Поэтому вы можете использовать ее для направления запросов к вашему серверу. Например, "ypcat passwd.byname" выдаст вам все пароли, отсортированые по имени пользователя, которые присутствуют в соответствующей директории.  

Последние детали

Некоторые файлы все еще нуждаются в незначительных изменениях, чтобы сделать эффективной работу YPs: Что касается использования теневых паролей с NIS - эта функция поддерживается только с glibc2.x. Вы должны обдумать их указание в nsswitch.conf.

Протокол NIS

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

Когда клиенту необходима информация, содержащаяся в карте YPs, он начинает с поиска сервера YP. Чтобы найти его, он открывает TCP соединение с локальным ypbind. Клиент сообщает ему домен (домен NIS), которому он принадлежит, и ypbind делает широковещательный запрос через функцию RPC YPPROC_DOMAIN_NOACK. Серверы NIS, обслуживающие этот домен, отзываются посылкой ACK. Остальные молчат.

ypbind посылает клиенту результаты поиска (неудачный или удачный) и, если у него есть, адрес первого ответившего сервера YP. Теперь клиент может направить серверу свой запрос, указывая домен, карту и ключ.

Данный протокол достаточно медленен, так как использует TCP соединения. Более того, он также использует много сокетов. Чтобы улучшить положение, ypbind не ожидает подключения клиента для поиска серверов. На самом деле, список серверов для каждого домена он содержит в файле /var/yp/binding/<имя_домена>.<версия> и постоянно проверяет, правильно ли они работают.

yp-утилиты

В этой части коротко рассказывается о некоторых утилитах из пакета yp-утилит. Чтобы узнать больше, вы можете вызвать очень подробную man-страницу для каждой из этих команд ;-P



Несколько слов о NIS+

До этого мы не говорили о разновидностях NIS. Использование NIS в сети означает сильно рисковать безопасностью. Например, если сервер NIS плохо защищен и если некто с плохими намерениями узнает:

  1. Имя домена NIS
  2. IP адрес клиента NIS
он может очень легко подделать этот IP адрес (выступить в роли этой машины) и послать ypcat passwd, чтобы легко получить список паролей. :-(

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

Данные содержатся в таблицах, которые расположены в различных директориях. Каждый столбец в таблице имеет заголовок, во котором указано, например, будут ли данные зависеть от регистра ("case sensitive"), в двоичном формате и т.д.

Вышеописанная структура легко позволяет поддерживать права доступа на директории и таблицы и дополнительно на столбцы в таблицах. Это значит, что возможно запретить доступ к таблице паролей всем пользователям, не аутентифицированым на сервере NIS+. Но это дает доступ всем аутентифицированым пользователям к таблице паролей, кроме поля "passwd". Только владелец поля "passwd" может извлекать информацию из него.

Есть 4 уровня защиты :

  1. Nobody : пользователь не аутентифицирован ;
  2. Owner : пользователь аутентифицирован как владелец ;
  3. Group : пользователь аутентифицирован и принадлежит к группе, имеющей доступ к этому объекту ;
  4. World : пользователь аутентифицирован, но он не владелец и не принадлежит группе, имеющей доступ к этому объекту .


В этой конфигурации, root - всего лишь один из пользователей ... ну почти ;-) Если у него нет соответствующих разрешений, он не сможет больше посмотреть пароли других пользователей. Поэтому он больше не сможет быть аутентифицирован как другой пользователь ... однако, он все еще может легко выполнить su :)

Данные, передающиеся по сети, не будут зашифрованы. Однако это не так для паролей : ни один пароль не передается по сети открытым текстом.

NIS+ - мощная вещь ... но ее сложно установить. Thorsten Kuduk пишет следующее (он работает над NIS, NIS+, NIS-HOWTO ... поэтому он знает о чем говорит ;-) :
"Сделать выбор между NIS и NIS+ очень просто : используйте NIS до тех пор, пока у вас нет особой нужды в безопасности. NIS+ во много раз сложнее администрировать (особенно на стороне сервера)"

Заключение

Мы научились добавлять новую машину в существующую сеть, где уже установлен сервер NIS. В следующей статье мы рассмотрим, как сконфигурировать сервер и как он работает.


Сноски

... var/yp/binding1
Не всегда указываются точные местоположения файлов, так как они различаются в зависимости от дистрибутива. Например, чтобы установить демон ypbind, запускающийся при загрузке: /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local
... широковещание2
Это означает, что сообщение передается по всей подсети без конкретного адреса назначения (тип X.Y.0.0)
... сетевая группа3
Файл /etc/netgroup определяет группы, составленные из троек (хост, пользователь, домен), служащие для проверки разрешений, когда вы используете удаленные команды (типа удаленные входы в систему, оболочки или монтирование). Подробнее об этом см. страницы man.

 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Frédéric Raynal, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
fr -> --
fr -> en
en -> ru

2001-07-10, generated by lfparser version 2.8