"Мини-HOWTO: XDM и X-терминалы"

Kevin Taylor

Перевод: Станислав Рогин, ASPLinux

Аннотация

В этом документе описываются базовые идеи использования XDM для управления X-терминалами. Этот текст является не полным описанием всех возможностей XDM, а всего лишь введением в основы того, что XDM может делать с X-терминалами.

Более подробное описание установки и настройки X-терминалов вы найдете в "HOWTO: Thin-Client" из Проекта Документирования Linux (Linux Documentation Project, см.Разд. Ссылки).


Введение


Copyright Information

This document is copyrighted (c) 2000 Kevin Taylor and is distributed under the terms of the Linux Documentation Project (LDP) license, stated below.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have any questions, please contact


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


Ответственность

Автор не несет никакой ответственности за содержимое этого документа. Используйте принципы, примеры и любую другую информацию из этого документа на свой страх и риск. Перед вами новая редакция этого документа, и по этой причине в ней могут быть ошибки или неточности, которые могут нанести ущерб вашей системе. Действуйте с осторожностью, и, несмотря на то, что автор совершенно не желает вам неприятностей, он все же за них никакой ответственности не несет.

Все авторские права и торговые марки принадлежат их уважаемым владельцам, если отдельно не указано иное. Использование термина, названия или понятия в этом документе никоим образом не влияет на используемость торговых или сервисных марок.

Упоминание об отдельных продуктах или торговых марках не должно расцениваться как их реклама.

Автор настоятельно рекомендует вам создать полную резервную копию системы перед установкой программ, а также создавать регулярно эти копии для сохранности ваших данных.


Новые версии

Это - исходная версия этого документа.

Самую свежую версию этого документа можно найти по адресу The Northants LUG, UK Project Pages .


Благодарности

Большое спасибо тем, кто помог мне советами и поиском ошибок в этом документе:

Scot W Stevenson за исходную версию Мини-HOWTO: X-терминал, (1995), из которого были взяты некоторые советы о расширенных настройках xdm-config.

Членам группы пользователей Linux Northants, UK за поиск ошибок в этом документе.

А также тем, кто написал man-страницы XDM, Xserver, а также стандартные скрипты XDM.


Отзывы

Автор приветствует любые отзывы. Этот документ не был бы создан без вашего содействия. Пожалуйста, шлите свои дополнения, комментарии и критику по электронной почте на адрес: .


Что еще надо сделать?

Возможно, я забыл упомянуть в этом документе о некоторых деталях...

  • Безопасности и схемах аутентификации.

  • Проблем отладки в XDM.

  • Заменах XDM - т.е. KDM и GDM.

  • LBX ?

О чем то еще?


Базовые принципы


Что описывается в этом документе?

В этом документе описываются базовые принципы использования XDM (менеджер дисплея X) при его управлени X-терминалом и X-серверами, для реализации систем с "тонкими клиентами" при помощи Linux.

X (или 'Система X Window') - это одна из лучших оконных графических сред для Unix. Одно из главных ее преимуществ состоит в том, что работающие в ней приложения (обозреватель сети, текст-процессор и т.п.) и устройства ввода-вывода (графический экран, мышь, клавиатура и т.п) связаны при помощи единого сетевого коммуникационного механизма.

Например, это означает, что вы можете запустить программу на одной машине, а ввод и вывод переназначить на другую машину, соединенную с первой через сеть. Это - ключевая особенность X, которая позволила создать X-терминалы.

Этот документ не описывает установку или настройку сети или X в Linux. Для этого обращайтесь к соответствующим документам HOWTO, входящим в состав Проекта Документирования Linux. (см. раздел Разд. Ссылки).

Этот документ можно рассматривать как "Начинаем работу с XDM", потому что в нем описываются базовые принципы и концепции использования XDM и X-терминалов, а также приводятся простые примеры, обеспечивающие минимум безопасности.

Автор рекомендует вам обратиться к списку ссылок на другие документы, приведенному в конце этого текста. Там вы можете узнать, как продолжить настройку вашей системы, установить аутентификацию, усилить меры безопасности, так как примеры, приведенные ниже, сделаны на минимальном уровне защиты от внешних посягательств.

Заметьте также, что информация, приведенная в этом документе, собрана на основе опыта работы с системами Debian 2.1, SuSE 6.4, Mandrake 7.0 и RedHat 6.0.

Этот документ не описывает, как установить и настроить Linux для поддержки X-терминалов. Описание установки и настройки X-терминалов вы найдете в "HOWTO: Thin-Client" из Проекта Документирования Linux (Linux Documentation Project, см. раздел Разд. Ссылки).


Об этом документе

Этот документ появился на свет, потому что мне захотелось поэкспериментировать с Linux на 486-ой машине в качестве X-терминала моей главной Linux-машины.

После прочтения man, спецификаций, howto и документации, касающейся XDM и X-терминалов, я окончательно запутался во всем - зачем нужен XDM, что такое XDM-сервера и X-сервера и т.п. После этого я экспериментировал целый вечер, после чего и появился этот документ.

После того, как я рассортировал базовую терминологию, документация к XDM и примеры стали понятны - просто я не мог выяснить, с чего начать. Я надеюсь, что этот документ будет простым и понятным введением для тех, кто попал в такую же ситуацию.

А, кстати, если вам интересно - 486dx2/66 с 16 Мб ОЗУ может быть прекрасным X-терминалом!


XDM


Что такое XDM?

Если проще, то XDM (X Display Manager) можно представить, как графическую замену стандартному входу в систему (login). На самом же деле он может значительно больше.

Обычно он запускается пользователем "root" (или скриптами загрузки системы) при включении машины, и предлагает пользователю графическое приглашение ко входу. После этого он управляет сессией работы пользователя с X - он запускает менеджер окон и приложения.

Это можно описать, как "простой вход в локальную систему". Так оно и есть по умолчанию во многих известных дистрибутивах Linux. Однако, XDM также может работать с удаленными X-серверами, и предоставлять приглашение ко входу в систему на удаленнных X-терминалах. Короче говоря, он не ограничен локальной машиной - он может управлять и другими машинами, подключенными к нему по сети.

XDM - очень мощная утилита, и этот документ лишь немного коснется его возможностей. Цель этого документа - донести до вас информацию о том, как настроить ваши X-терминалы и серверы приложений так, чтобы они могли связаться друг с другом. Более подробную информацию вы найдете в главе Разд. Ссылки.


Что такое X-терминал

Этот термин применяется во многих случаях, но самый простой вариант - это машина, подключенная к сети, у которой есть клавиатура, мышь и монитор, и она может запустить систему X windows для связи с сервером приложений, находящемся где-то в сети.

Существуют разные конфигурации "X-терминалов" разных уровней - начиная от полностью бездисковых терминалов, заканчивая мощными X-рабочими станциями.


Терминология

Перед тем, как мы продолжим, я должен разъяснить вам значение некоторых терминов, которые я буду использовать в этом документе. При разговорах об X немудрено запутаться в понятиях "сервер", "клиент" и т.п. Это особенно проявляется в случае, если вы собираетесь работать с X по сети, используя X-терминалы. В этом документе я буду употреблять следующие термины:

Бездисковый X-терминал

Это машина без локальных дисков, которая загружается через сеть при помощи сервера. Это значит, что она получает параметры сети, операционную систему, ее настройки и все приложения с сервера. После загрузки она представляет из себя "простой X-терминал" (см. ниже). Обычно эта система использует один или несколько протоколов удаленной загрузки: BOOTP, DHCP, TFTP и т.п. Подробнее о бездисковых станциях читайте в документах, перечисленных в главе Разд. Ссылки.

Простой X-терминал

Это машина, которая загружает операционную систему с локального диска, после этого запускает "X-сервер" и все. Далее каким-то образом на экране должно появиться приглашение ко входу в сервер приложений, который находится в другом месте сети.

Рабочая станция X

Она аналогична простому X-терминалу, за исключением того, что в ней можно войти в саму локальную машину, чтобы при необходимости у пользователя была возможность работы при отсутствии сети.

Сервер приложений

В этом документе, я буду называть "сервером приложением" машину, на которой работает X-сессия и X-приложения (на ней может не быть графической консоли, приглашения ко входу, и, возможно, экрана и клавиатуры вообще).

X-Сервер

Это машина с физической консолью (дисплей, клавиатура, мышь и т.п.), которая может предоставлять необходимые сервисы X-клиентам. Более подробно читайте в "HOWTO: Пользователь X", ссылка на который приведена в разделе Разд. Ссылки.

X-Клиент

Это приложение, которому для осуществления ввода-вывода требуется X-сервер.

Исходя из вышеприведенных описаний, рабочую станцию X можно представить в виде комбинации простого X-терминала и сервера приложений, работающих на одной машине.

В этом документе описаны несколько вариантов комбинаций элементов, перечисленных выше, а также описано, какую роль может играть xdm в настройке этих комбинаций.


Что может XDM?

XDM - это утилита, отвечающая за приглашение ко входу в систему, и инициализирующая их X-сессию. Это может быть как локальная сессия (в случае с рабочей станцией X), так и удаленная сессия работы с сервером приложений (в случае бездискового или простого терминалов).

Существуют два метода, которые могут привести к выдаче приглашения ко входу в систему:

  • Запрос X-сервера

  • Через XDM-сервер


Запрос X-сервера

Связь между XDM и настоящим "X-сервером" (машиной с настоящим экраном/клавиатурой/мышкой/и т.п.) производятся при помощи протокола XDMCP ('X display manager control protocol').

Это позволяет X-серверу посылать запросы на XDM-сервер, обычно говоря ему что-то типа "Тут кто-то хочет войти в систему - дайте мне приглашение ко входу".

Эта функция может принять одну из 3 форм:

  • Прямой запрос: X-сервер связывается с заданной с машиной, посылая запрос на получение приглашения ко входу на его дисплей.

  • Широковещательный запрос: X-сервер посылает общее сообщение по сети, и первый сервер, на котором запущен XDM, отвечающий на это сообщение, предоставляет X-серверу приглашение ко входу в сеть.

  • Косвенный запрос: X-сервер связывается с заданной машиной, но спрашивает у нее, какие другие машины с xdm она знает. Эта машина предоставляет пользователю для выбора список машин, и после этого X-сервер устанавливает соединение с выбранной машиной. Приглашение ко входу передается X-серверу уже по этому новому соединению.

Существуют еще несколько форм, но они не будут описываться здесь. Для этого обращайтесь к документации по XDM и XDMCP, ссылки на которые приведены в Разд. Ссылки.


Через XDM-сервер

Если у вас есть несколько машин (бездисковых или простых X-терминалов) с X-серверами, работающих с одним сервером приложений, то для реализации процедуры входа в этот сервер можно использовать XDM. В этом случае XDM сам связывается с каждым X-сервером и автоматически выводит на дисплей приглашение ко входу в сервер приложений.

В этом режиме работы файл "Xservers" содержит список машин (включая и локальную, если это необходимо), с которыми XDM должен связаться для выдачи на их экран приглашения ко входу.

Эта конфигурация (если в списке X-серверов нет удаленных машин) очень часто используется на X-рабочих станциях для того, чтобы выдать на экран приглашение ко входу на локальную машину.

Подобный способ требует того, чтобы права доступа X-сервера позволяли XDM сервера приложений устанавливать обратную связь к соответствующему дисплею.


Настройка XDM

В этом разделе описывается настройка XDM для выполнений функций, описанных в предыдущей главе.

В каждом случае нижеописанная конфигурация - это необходимый для достижения цели минимум. В большинстве случаев эта конфигурация плохо защищена. Для того, чтобы усилить безопасность ваших X-терминалов и серверов приложений, читайте документацию, список которой приведен в разделе Разд. Ссылки.


Конфигурационные файлы

Ниже описана следующая схема конфигурационных файлов XDM:

  • xdm-config

  • Xaccess

  • Xservers

  • Xresources

Эта схема применяется в (Debian 2.1. Mandrake 7.0.2, RedHat 6.2) :
      /etc/X11/xdm
      
или (SuSE 6.4) :
      /usr/X11R6/lib/X11/xdm
      

xdm-config

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

В этом файле также задаются файлы скриптов, запускаемые при смене состояния X-сессии (запуск системы и т.п.). Вам не надо это изменять, так как все дистрибутивы идут уже с готовыми настройками.

Xaccess

В нем задается список машин, которые могут соединяться c XDM на этой машине - т.е., какие машины могут посылать XDMCP-запросы на этото сервер.

Xservers

Содержит список машин, с которыми будет связываться XDM для автоматической выдачи на их экран приглашения ко входу в систему (т.е. список машин, на которых уже работает X-сервер, но они хотели бы получить приглашение ко входу именно от этой машины).

Xresources

Содержит детальное описание свойств X, используемых мастерами XDM (таких, как размер окна с приглашением ко входу, его цвет, фон, и т.п.)


Настройка XDM для управления X-серверами

Для каждой машины, на которой XDM будет автоматически выдавать на ее экран приглашение ко входу в сервер приложений, необходимо задать строку в файле Xservers. Туда могут войти как локальная машина, так и список удаленных машин.

Пример
      # Сначала локальная машина
      :0 local /usr/bin/X11/X vt7
      #
      # Затем удаленные
      emma:0 foreign
      alex:0 foreign
      

Это позволит XDM запуститься на локальной машине и заодно выдать приглашение ко входу на машинах 'emma' и 'alex' (преполагая, что права на этих машинах настроены так, что нашему XDM можно с ними связываться).

Заметьте также, что в этом файле можно задавать не только имя машины, но и номер дисплея (:0, :1, и т.п.), если это необходимо (например, если вы используете несколько X-серверов на одной машине и т.п.)


Настройка XDM для обработки запросов

В файле Xaccess задается список машин, которым разрешено посылать запросы на получение приглашения ко входу от XDM.

Пример
      # Первая строка для прямых запросов
      *
      # Следующая строка для косвенных запросов
      * CHOOSER BROADCAST
      

Это означает, что напрямую к этому XDM можно подключиться с любой машины (первая строка с "*"). Строка с опцией "CHOOSER" позволяет другим машинам посылать этому XDM косвенные запросы (с получением списка машин, к которым можно подключиться).

'BROADCAST' означает, что программа "chooser" на этой машине получает список доступных XDM-серверов при помощи широковещательных сетевых запросов. Я поговорю об этой программе чуть позже.

В этом файле можно задавать имена машин. Существуют и другие виды косвенных запросов (без "chooser"), но я не буду здесь это описывать. Если вам это интересно, читайте документацию, список которой приведен в главе Разд. Ссылки.


Запуск X

Способ запуска самого X-сервера зависит от того, с каким XDM вы хотите работать - с локальным или удаленным.

Рабочая станция X: XDM и локальный X-сервер

XDM будет нормально запускать X-сервер автоматически, и сам XDM запускается обычно в процессе запуска X (в инициализационных скриптах).

X-Терминал : Удаленный XDM

Просто запустите X без клиентских программ, с такими правами, чтобы удаленный XDM мог связаться с вашим X-сервером. Ниже приведена команда запуска X без контроля доступа:
          /usr/X11R6/bin/X -ac
          

X-терминал : Запрос на удаленный XDM

Напоминаю, что существуют 3 вида запросов: прямой, косвенный и широковещательный (прямой для одной машины, широковещательный для первой машины, ответившей на запрос):
          # Прямой запрос
          /usr/X11R6/bin/X -query удаленная.машина
          # Широковещательный запрос
          /usr/X11R6/bin/X -broadcast
          # Косвенный запрос
          /usr/X11R6/bin/X -indirect удаленная.машина
          

В каждом случае X должен быть запущен пользователем root. Запуск X можно настроить в инициализационных скриптах загрузки системы (если это необходимо).


Программа Chooser

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

В этом режиме пользователь вместо обычного приглашения ко входу получит на экране окно программы "chooser", которая позволит выбрать ему одну из найденных в сети машин с XDM-сервером.

Когда я впервые испытывал "chooser", я обнаружил, что размер окна этой программы, описанный в файле Xresources, поставляемом в комплекте с моими дистрибутивами SuSE и Debian, слишком велик. Исправьте следующим образом строку в файле Xresources:
      Chooser*geometry:      700x500+300+200
      

Программа "chooser" получает список машин двумя способами:

  • Широковещательный запрос: В этом режиме "chooser" посылает широковещательный запрос по сети, и затем создается список из имен серверов приложений, ответивших на этот запрос..

  • Перечисление: Этот список также можно задать в файле Xaccess, например:
            %hostlist      emma alex liam
            *              CHOOSER %hostlist
            
    Это означает, что машины emma, alex и liam будут в списке серверов приложений (скорее всего, даже если одна из машин отключена? Надо проверить....)


Дополнительные опции настройки


Наборы конфигурационных файлов

В файле xdm-config можно настроить очень много разных опций, и он обычно уже поставляется настроенным. Во многих случаях, файла, поставляемого с вашим дистрибутивом, будет достаточно. Но если вам нужно больше...

Названия стартовых скриптов и конфигурационных файлов, используемых XDM, определяются специальными операторами в начале файла xdm-config. Это позволяет вам иметь разные наборы конфигурационных файлов для разных X-серверов и X-терминалов.

Например, предположим, что вы используете XDM для работы с вашим локальным дисплеем, но хотите, чтобы он обрабатывал и запросы с других X-терминалов сети. В этом случае можно задать два различных файла Xresources для себя и для удаленных терминалов. Для этого надо в файл xdm-config вписать следующие строки:
      DisplayManager._0.resources            /etc/X11/xdm/Xres_0
      DisplayManager*resources               /etc/X11/xdm/Xresources
      
В результате этого для локального дисплея будет использоваться файл Xres_0 (_0 - это то же самое, что и :0, только на языке XDM), а для всех остальных - файл Xresources ('*').

Заметьте, что в конфигурационных файлах XDM для задания конкретного дисплея на машине используется терминология: машина_0, а не машина:0.

Аналогично вы можете задать специальный файл Xresources для конкретной машины примерно так:
      DisplayManager.host_0.resources       /etc/X11/xdm/Xres_host_0
      

Если вы взглянете в свою стандартную версию файла xdm-config, то вы обнаружите, что файлы конфигурации уже разделены на группы для локальной машины и для удаленных, так как в этих случаях xdm-сервером выполняются разные операции. В моем дистрибутиве Debian для локальных серверов использовались следующие файлы:
      DisplayManager._0.resources:    /etc/X11/xdm/Xresources_0
      DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
      DisplayManager._0.startup:      /etc/X11/xdm/Xstartup_0
      DisplayManager._0.reset:        /etc/X11/xdm/Xreset_0
      
а для удаленных:
      DisplayManager*resources:       /etc/X11/xdm/Xresources
      DisplayManager*setup:           /etc/X11/xdm/Xsetup
      DisplayManager*startup:         /etc/X11/xdm/Xstartup
      DisplayManager*reset:           /etc/X11/xdm/Xreset
      


Ссылки

В этой главе приведен список ссылок на документы, которые использовались при написании этого текста, и в которых более подробно объяснены некоторые детали описанных здесь принципов:

Система X Window

  • HOWTO: Пользователь X (из LDP)

  • Man-страницы: X (главные принципы), Xserver (Принципы работа X-сервера)

  • X FAQ (в www.x.org)

Тонкие клиенты/X-терминалы

XDM

  • Man-страницы : xdm