Утилита xhost в Unix/Linux

Утилита xhost в Unix/Linux

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

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

Установка xhost в Unix/Linux

Иногда, данная утилита не присутствует в ОС и по этому, нужно ее установить.

Установка xhost в DEB ОС

Выполняем установку:

# apt-get install x11-xserver-utils x11-utils

Для поиска можно использовать:

# apt-cache search xhost
x11-xserver-utils - X server utilities

Как-то так.

Установка xhost в RPM ОС

Выполняем установку:

# yum install xorg-x11-server-utils -y

Дополнительные пакеты:

# yum install -y xorg-x11-app*
# yum groupinstall -y 'X Window System'
# yum install -y xorg-x11-xauth xorg-x11-fonts-* xorg-x11-utils xterm
# yum -y groupinstall fonts

Для поиска можно использовать:

# yum whatprovides "*/xhost"

Как-то так.

Установка xhost в MacOS X

Выполняем установку homebrew — Установка homebrew на Mac OS X и после чего, выполняем:

$ brew install Caskroom/cask/xquartz

Как-то так.

Использование xhost в Unix/Linux

Данная утилита имеет следующий синтаксис:

$ xhost [[+−] remote_host_name ...]

Опции:

  • -help — Служит командой для вывода помощи по командам и опциям.
  • +name — Добавляет «name» (название IP или хостнейма) в список, кто имеет право подключаться к X-серверу.
  • -name — Удаляет «name» (название IP или хостнейма) со списка тех, кто имеет право подключаться к X-серверу.
  • +  — Контроль доступа к X-серверу отключен; разрешение всем и отовсюду.
  • —  — Контроль доступа к X-серверу включен; разрешение только по списку.
  • <ничего>  — Если аргументов не указано то выводится информации о текущем состоянии разрешения подключений.

Выведем информацию о текущем состоянии разрешений пользователей или хостов на подключение:

$ xhost

Разрешить полный доступ к X-серверу (всем и отовюсду):

# xhost +

Запретить доступ к X-серверу (разрешение только по списку):

# xhost -

Разрешить запуск графических программ от имени root на локальной машине:

# xhost local:root

Разрешить запуск графических программ от имени root на локальной машине:

# xhost local:root

Или:

# xhost +si:localuser:root

Разрешить запуск графических программ с 192.168.13.113 на локальной машине:

# xhost + 192.168.13.113

Запретить запуск графических программ с 192.168.13.113 на локальной машине:

# xhost - 192.168.13.113

Можно указать вот так:

  • 192.168.13.113:0 Нулевой дисплей на компьютере Sky
  • 192.168.13.113:0.1 Первый экран нулевого дисплея данного компьютера
  • 192.168.13.113:3 Третий дисплей данного компьютера

Чаще всего имя дисплея — это или просто «:0.0», или «компьютер:0.0». Чтобы узнать какой дисплей используется в системе, выполните:

$ echo $DISPLAY

Чтобы установить DISPLAY переменную, выполните (bash):

$ DISPLAY=192.168.13.113:0.0; export DISPLAY

Чтобы установить DISPLAY переменную, выполните (bash):

$ setenv DISPLAY 192.168.13.113:0.0

xhost + — огромная дыра в безопасности, поскольку она дает каждому доступ к вашим ресурсам X-сервера (не только вашему дисплею, но также и вашу мышь и клавиатуру), поэтому каждый может читать или изменять то, что вы набираете/нажимаете. Плохая привычка использовать «xhost +». Даже когда вы используете «xhost + localhost», вы открываете доступ всем людям кто на localhost-е.  Тогда, как быть и что исользовать? Простейшим способом является ssh-туннелирование.

$ ssh -X oracle@localhost
Last login: Fri Max 2 11:33:55 2017 from localhost

$ if xterm -e true; then echo success; fi
success

Другой способ это — использовать cookie X:

$ xauth extract ~/my-x-cookie $DISPLAY<
$ setfacl -m u:oracle:r ~/my-x-cookie
$ su - oracle -c "DISPLAY=$DISPLAY bash"
Password:

$ if xterm -e true; then echo success; fi
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

xterm Xt error: Can't open display: :0.0

$ xauth merge ~lsc/my-x-cookie
xauth: creating new authority file ~oracle/.Xauthority

$ if xterm -e true; then echo success; fi
success

Можно создать алиас:

alias oracle='
xauth extract $HOME/my-x-cookie $DISPLAY;
setfacl -m u:oracle:r $HOME/my-x-cookie;
su - oracle -c "export DISPLAY=$DISPLAY;
xauth merge $HOME/my-x-cookie;
bash"'

Вот и все, статья «Утилита xhost в Unix/Linux» подошла к завершению.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *