Чтобы подключиться к чужому сеансу X11, вам потребуется правильное значение переменной среды DISPLAY
и содержимое файла ~/.Xauthority
другого пользователя.
Если user1
зарегистрирован локально, их значение переменной DISPLAY почти всегда равно :0.0
, так как это первый локальный дисплей X11.
Как user2
, вы можете сделать это:
export DISPLAY=':0.0'
sudo cp ~user1/.Xauthority $TMP/user1_Xauthority
sudo chown user2 $TMP/user1_Xauthority
export XAUTHORITY=$TMP/user1_Xauthority
xclock &
Поскольку DISPLAY=':0.0'
указывает приложениям X11 подключаться к локальному дисплею через сокет UNIX, расположенный в /tmp/.X11-unix/X0
, эти команды должны выполняться на том же хосте, на котором установлен физический дисплей.
Исторически сложилось так, что протокол X11 изначально разрабатывался также для того, чтобы можно было подключаться к дисплею по сети, используя TCP-порт (6000 + номер дисплея ), но это оказалось небезопасно, и на современных Linux/ Системы Unix обычно отключены по умолчанию, поэтому использование чего-то вроде export DISPLAY=remotehost:0.0
для передачи вывода вашего приложения X11 на дисплей, подключенный к remotehost
, не будет работать, если специально не включено (, и включение этого обычно является плохой идеей ).