Книга: Сетевые средства Linux
Настройка 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-байтовое шестнадцатеричное число. Несмотря на то что эти данные предназначены для передачи, их можно не учитывать.
3. Введите команду extract имя_файла имя_дисплея
. Здесь имя файла может быть любым, а имя дисплея — это имя, которое вы выяснили на предыдущем шаге процедуры. Например, вы можете задать команду extract xfer-auth term.threeroomco.com:0
. В результате запись файла .Xauthority
для дисплея будет скопирована в указанный файл. Файл используется для передачи ключа на клиентский компьютер.
4. Введите команду exit
, чтобы завершить работу с программой xauth
.
5. Скопируйте файл, созданный при выполнении команды extract
, да клиентский компьютер (удаленный компьютер, на котором расположена программа, предназначенная для выполнения). Сделать это можно различными способами: использовать средства FTP или NFS, перенести файл на дискете и т.д.
6. Зарегистрируйтесь на компьютере, выполняющем функции X-клиента.
7. Задайте команду xauth
, чтобы запустить утилиту xauth
на клиентской машине.
8. Введите команду merge имя_файла
. В этой команде должно быть указано имя файла, которое вы сгенерировали посредством команды extract
и скопировали на клиентский компьютер. (Возможно, вам придется указать путь к файлу.)
9. Задайте команду list
. Данная команда, помимо прочих сведений, должна отобразить запись для X-сервера, которую вы только что включили. Если такая запись отсутствует, это значит, что какие-то из предшествующих действий были выполнены неправильно.
10. Введите команду exit
, чтобы завершить работу xauth
и сохранить внесенные изменения. (Заметьте, что в xauth
также предусмотрена команда quit
, которая не сохраняет изменения. Команду quit
надо использовать в том случае, если при выполнении данной процедуры были допущены ошибки.)
Если на обоих компьютерах инсталлированы средства SSH, вы можете вместо описанной выше процедуры выполнить единственную команду.
# xauth list x_сервер:0 | sed -e 's/^ /add /' | ssh
x_клиент -х xauth
В данном случае xauth
вызывается в командной строке, sed
используется для включения команды add
в начало выходных данных, кроме того, утилита xauth
запускается также на стороне X-клиента. При вызове данной команды необходимо учитывать следующее.
• Вместо x_сервер
надо указать имя компьютера, за которым вы работаете, а вместо x_клиент
— имя компьютера, на котором должна выполняться клиент-программа.
• Между add
и последующей косой чертой (/
) должен быть пробел. Эта команда передается утилите xauth
на клиентском компьютере, и пробел должен отделять add
от имени дисплея.
• Если конфигурация SSH предполагает ввод пароля либо фразы пароля, вам придется ввести соответствующие данные.
С этого момента X-сервер будет принимать обращения от X-клиентов, но, чтобы эти программы могли работать совместно, вам придется установить на клиентском компьютере опцию, позволяющую взаимодействовать с X-сервером (этот вопрос будет подробнее рассмотрен в следующем разделе). При установлении соединения клиент X Window обратится к файлу .Xauthorit
y за ключом, соответствующим серверу.
Поскольку работа xauth
основана на применении ключа, который известен только серверу и авторизованному клиенту, она обеспечивает более высокий уровень защиты, чем xhost
. Кроме того, при использовании xauth
доступ к серверу предоставляется только отдельным пользователям. X-сервер становится более устойчивым к атакам, осуществляемым путем подмены IP-адреса. Недостатком данного способа является передача ключей в незакодированном виде. Если локальная сеть не обеспечивает безопасность передаваемых данных либо если клиент с сервером взаимодействуют по Internet, ключ может быть похищен и злоумышленник получит доступ к X-серверу. Если при обмене данными в системе X Window необходимо обеспечить высокий уровень защиты, надо использовать SSH-соединение. Вопросы поддержки X-взаимодействия посредством SSH будут подробно рассмотрены в следующем разделе.
На заметку
Не все X-серверы сконфигурированы для работы с xauth
. Соответствующая опция обычно устанавливается в том случае, когда X-сервер запускается посредством XDM, GDM или KDM. Если вы запускаете X-сервер с помощью startx
, поддержка xauth
в ряде систем будет отсутствовать. В некоторых случаях вам придется отредактировать сценарий startx
(он обычно располагается в каталоге /usr/X11R6/bin
) так, чтобы в нем присутствовала опция -auth файл_авторизации
; в качестве файла авторизации обычно указывается файл .Xauthority
, находящийся в рабочем каталоге. Часто в редактировании startx
нет необходимости.
- Обеспечение удаленного доступа средствами X Window
- Взаимодействие клиента и сервера VNC
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Статистика InterBase-сервера
- Минимальный состав сервера InterBase SuperServer
- Отличительные особенности сервера Yaffil
- Использование сервера Yaffil внутри процесса
- Одновременный запуск нескольких копий сервера (multi-instancing)
- Мониторинг состояния сервера
- Настройка учетных записей пользователей
- 9.2. Работа прокси-сервера