Что должен делать `ln --no -разыменование `?

Вы можете создать второе соединение с включенной переадресацией X11, а затем вы также можете использовать переменную среды DISPLAYиз второго соединения в первом.

В 1-м окне:

$ ssh user@host
user@host$...

Во 2-м окне:

$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0

Назад к 1-му окну:

user@host$ export DISPLAY=localhost:10.0
user@host$ xterm

К сожалению, sshничего не делает для того, чтобы содержать X11 (или другие )перенаправления к процессу/сеансу, который он начал, или пользователю, которого он запускает, как на удаленной машине (, например. с помощью сокетов Unix без проверки учетных данных или с использованием пространств имен ), и эти пересылки представляют собой простые прослушивающие сокеты tcp, к которым может подключиться любой на удаленной машине; вся безопасность пересылки X11 зависит от аутентификации X11.

X11 Переадресация вручную

На справочной странице sshd_config(5)упоминается, что:

disabling X11 forwarding does not prevent users from forwarding X11 traffic, as users can always install their own forwarders.

Вот как это можно сделать вручную.

Прежде всего, обязательно отключите любой контроль доступа на основе хоста -или пользователя -, который обходит механизм аутентификации x11 [1]:

$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect

Затем показать информацию об авторизации для DISPLAY=:0на локальном компьютере:

$ xauth list :0
ohzd/unix:0  MIT-MAGIC-COOKIE-1  a86982ddce0c1e1c1a8c5e8b2846e43b

Подключиться к удаленному компьютеру без переадресации X11:

$ ssh user@hzy64
user@hzy64's password:
[motd snipped]

Откройте командную строку через ~Cи добавьте удаленную переадресацию с порта 6000+43на сокет unix, соответствующий дисплею:0:

hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.

Установите $DISPLAYenvvar и добавьте информацию об аутентификации с локального компьютера на удаленный:

hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY. a86982ddce0c1e1c1a8c5e8b2846e43b
xauth:  file /home/user/.Xauthority does not exist

Теперь вы готовы идти:

hzy64$ xterm

[1] из-за ошибочного исправления ошибки управление доступом на основе пользователя -включено по умолчанию в Debian через /etc/X11/Xsession.d/35x11-common_xhost-local. Хуже,это единственный доступный по умолчанию в XWayland, где его также нельзя отключить . Любая программа, которая проксирует протокол X11 (, например.xscope)должен будет выполнить свою собственную проверку файлов cookie аутентификации x11 (так же, как это делает ssh ), если только он не хочет открыть зияющую дыру для сервера X11.

0
09.01.2020, 09:18
1 ответ

Без -nобе ваши команды lnбудут создавать ссылки внутри dir2:, если LINK_NAMEсуществует и является каталогом или символической ссылкой на каталог, ссылка создается внутри каталога (, если это возможно ).

Вот что -nменяется здесь:lnне будет считать LINK_NAMEкаталогом (, если это символическая ссылка ). Поскольку LINK_NAMEуже существует, lnне выполняется. Добавление -fприведет к замене существующей символической ссылки:

ln -nsf dir3 dir2

заменит dir2вместо создания ссылки внутри dir2.

7
28.01.2020, 02:38

Теги

Похожие вопросы