Рис. 14.1. Сервер X Window обеспечивает интерфейс между пользователем и программой, выполняющейся на удаленном компьютере
Сервер X Window представляет устройство отображения и одно или несколько устройств ввода (обычно клавиатуру и мышь). Сам X-сервер может выступать в роли клиента по отношению к другим серверам, например серверу шрифтов (он будет рассмотрен в главе 15). В ответ на запрос X-сервера сервер шрифтов доставляет ему шрифты, необходимые для отображения данных.
На заметку
Принцип взаимодействия клиента и сервера VNC противоположен принципу, реализованному в системе X Window. Детально работа VNC будет рассмотрена далее в этой главе. Отличие между данными протоколами приводит к тому, что одна система может успешно использоваться там, где вторая работает неэффективно либо не работает вовсе. В качестве примера можно привести конфигурацию сети, в которой
между клиентом и сервером расположен брандмауэр. Если на пользовательских компьютерах выполняются X-серверы, необходимо специально сконфигурировать брандмауэр. При использовании VNC специальная настройка таблиц брандмауэра не требуется. Средства SSH создают иллюзию того, что клиент и сервер X Window "поменялись местами" и взаимодействие между ними осуществляется так же, как и в большинстве сетевых служб.
X-серверы в различных операционных системах
Программы, реализующие сервер X Window, доступны не только в Linux и UNIX, но и в других операционных системах. Если вы хотите использовать в качестве терминала компьютер под управлением Windows, OS/2 или MacOS, вы должны лишь инсталлировать в системе X-сервер. Для этого хорошо подходят продукты XFree86 (
http://xfree86.cygwin.com
— для Windows,
http://ais.gmd.de/~veit/os2/xf86os2.html
— для OS/2 и
http://mrcla.com/XonX/
— для MacOS X), MI/X — для Windows и MacOS Classic (
http://www.microimages.com/freestuf/mix/
), Exceed — для Windows (
http://www.hcl.com/products/nc/exceed/
), Xmanager — для Windows (
http://www.netsarang.com/products/xmanager.html
) и Xtools — для MacOS X (
http://www.tenon.com/products/xtools/
). Данный список не охватывает все доступные продукты. Так, например, только для Windows существует множество серверов. специально предназначенных для получения доступа к системе Linux. Материалы дискуссии, позволяющей оценить возможности различных серверов X Window, находятся по адресу
http://www.microimages.com/mix/prices.htm
.
Как было сказано ранее, существуют специальные устройства, называемые X-терминалами. Они поддерживают функции сервера X Window, обеспечивают обмен по сети TCP/IP, и этим их возможности практически исчерпываются. X-терминал по сути представляет собой выделенный X-сервер. X-терминалы поставляют некоторые компании, например Network Computing Devices (NCD;
http://www.ncd.com
) и Hewlett Packard (
http://www.hp.com
). Для работы этих устройств, как правило, необходимо, чтобы в сети выполнялся сервер TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов); он нужен для передачи загрузочных файлов. (Сервер TFTP не обязательно должен находиться на компьютере, использующем X-терминал.) Кроме того, X-терминалы также требуют, чтобы на компьютере, для работы с которым они предназначены; присутствовал сервер регистрации, поддерживающий графический интерфейс. В качестве X-терминала может быть использован компьютер старой модели. На этом компьютере надо установить минимальные средства Linux и изменить конфигурационные файлы так, чтобы система обеспечивала регистрацию на удаленном компьютере.
Большинство дистрибутивных пакетов Linux позволяет после установки операционной системы на компьютер установить требуемую конфигурацию X-сервера. Этот сервер может использоваться для поддержки доступа локального компьютера к средствам отображения. Такая конфигурация позволяет одному и тому же компьютеру выступать в роли как клиента, так и сервера X Window, т.е. на компьютере, выступающем в роли X-сервера (рис. 14.1), могут выполняться свои X-программы. X-сервер в системе Linux может также применяться для взаимодействия с X-клиентами, выполняющимися на других компьютерах. Для того чтобы подобное взаимодействие стало возможным, надо выполнить несколько команд, которые будут описаны далее.
Для того чтобы компьютер выполнял роль X-клиента, дополнительное программное обеспечение не требуется; клиентами X Window являются сами программы, которые запускаются в системе. В большинстве случаев этим клиентам в процессе работы требуются различные графические библиотеки, например Qt или GTK+. При инсталляции программ в системах, базирующихся на RPM или Debian, вы получите информацию о том, какие библиотеки нужны им для работы. Теоретически вам нет необходимости устанавливать X-сервер на компьютере, выполняющем роль клиента, однако на практике проще сделать это, так как из-за взаимной зависимости пакетов вам все равно приходится инсталлировать большинство компонентов X Window. X-сервер представляет собой отдельную программу, обеспечивающую интерфейс с монитором, мышью, клавиатурой и другими устройствами. Наличие локального X-сервера упрощает проверку X-программ. Для того чтобы программные средства X-сервера вступили в действие, надо запустить X-программу либо локально, либо на удаленном компьютере.
Настройка X-сервера для взаимодействия с X-клиентом
Подобно другим типам серверов, сервер X Window отвечает на запросы клиентов. В большинстве дистрибутивных пакетов Linux по умолчанию не предусмотрена работа в качестве X-терминала; считается, что компьютер будет выполнять функции рабочей станции или сервера, поддерживающих другие протоколы. Поэтому, чтобы использовать компьютер под управлением Linux как X-сервер для программ, выполняющихся на других узлах сети, необходимо изменить конфигурацию системы.
Сделать это можно двумя способами: с помощью программ
xhost
и
xauth
.
Использование программы
xhost
Программа
xhost
позволяет указанному при ее вызове удаленному компьютеру обращаться к X-серверу. Для того чтобы воспользоваться данной программой, надо в окне
xterm
или другом окне, поддерживающем командную строку, ввести следующую команду:
$ xhost +biggie.threeroomco.com
В результате ее выполнения X-сервер получает указания о том, что он должен принимать обращения от компьютера
biggie.threeroomco.com
. Любой пользователь, работающий на этом компьютере, сможет использовать X-сервер для отображения окон, получать данные, введенные с клавиатуры, принимать информацию о перемещениях мыши и выполнять другие действия с удаленными системами отображения. Если вы не укажете имя узла (а ограничитесь лишь вводом команды
xhost +
), X-сервер будет принимать обращения от любого источника.
На заметку
Большинство X-серверов для Windows, MacOS и других систем настроены так, что с ними может взаимодействовать любой узел сети. В системе Linux подобная конфигурация задается посредством команды
xhost +
.
Программа
xhost
проста и удобна в применении, но использовать ее можно лишь в той сети, в которой не требуются высокоуровневые средства защиты. Дело в том, что
xhost
не предпринимает попыток идентификации пользователей, работающих на удаленных компьютерах. Если доступ к серверу разрешен для узла сети, его автоматически получают все пользователи на этом узле. Любой пользователь удаленного компьютера может открывать окна на X-сервере и даже читать символы, вводимые с клавиатуры. Для ограничения доступа пользователей к X-серверу может быть использована программа
xauth
.
Использование программы
xauth
Программа
xauth
обеспечивает средства аутентификации, скрытые от пользователя. Данная утилита автоматически применяется при регистрации в системе X Window, но при желании вы можете вызывать ее вручную. Несмотря на то что программа
xauth
менее удобна в работе, чем
xhost
, она обеспечивает более высокий уровень защиты.
В процессе работы
xauth
использует файл
.Xauthority
, расположенный в рабочем каталоге пользователя. Этот файл должен находиться и на клиентской машине, и на сервере. Если данный файл отсутствует,
xauth
автоматически создает его. В отличие от большинства конфигурационных файлов Linux,
.Xauthority
не является текстовым файлом. Для изменения его содержимого используется утилита
xauth
. С помощью
xauth
можно добавлять, удалять ключи и выполнять с ними другие необходимые действия. Некоторые методы регистрации на удаленном сервере предполагают автоматическую проверку содержимого
.Xauthority
и добавление необходимого ключа. X-сервер принимает обращения от любого клиента, который обладает соответствующим ключом. (Поскольку
.Xauthority
содержится в рабочем каталоге пользователя, ключ генерируется тогда, когда данный пользователь регистрируется на компьютере или запускает X-программу. Различным пользователям могут соответствовать различные файлы
.Xauthority
.) Чтобы X-клиент мог работать с X-сервером, необходимо скопировать ключ из пользовательского файла
.Xauthority
на сервере в файл
.Xauthority
на клиентской машине. При обращении к серверу клиент автоматически использует этот ключ. Процедура передачи ключа описана ниже.
1. На компьютере, на котором выполняется сервер X Window, введите команду
xauth
. При этом утилита
xauth
будет запущена от имени пользователя, который применит систему для взаимодействия с удаленным узлом. Несмотря на то что
xauth
формально является X-утилитой, она выполняется в текстовом режиме.
2. Введите команду
list
. При ее выполнении будет выведена информация о ключах, содержащихся в файле
.Xauthority
. Каждый ключ начинается с имени дисплея, которое представляет собой имя узла, а за ним следует номер дисплея, например
term.threeroomco.com:0
. Имена некоторых компьютеров сопровождаются символами
/unix
, кроме того, по команде
list
будут также выведены записи для
localhost
. Оба типа записей можно не принимать во внимание. В некоторых записях номера дисплеев будут отличаться от 0. Эти записи соответствуют второму, третьему и последующим сеансам работы с X-сервером, которые поддерживаются одновременно с первым сеансом. Вас интересует имя основного дисплея? Вероятнее всего, оно будет состоять из имени вашего компьютера, за которым следует номер 0. После имени дисплея в строке будут отображаться также тип кодировки (например,
MIT-MAGIC-COOKIE-1
) и 32-байтовое шестнадцатеричное число. Несмотря на то что эти данные предназначены для передачи, их можно не учитывать.