ssh и sudo, но нет $DISPLAY

ssh и sudo, но нет $DISPLAY

Обычно я делаю это по ssh для получения X-приложения с помощьюsudo su

ssh -X server

OKI-логин

xauth list $DISPLAY

который возвращается ко мне

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

Тогда я делаю

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

И после запуска приложения X... Я понимаю, это правильно.

Проблема на Centos7, я делаю

xauth list $DISPLAY

И ничего не возвращает. Я пытаюсь добавить MIT magic cookies, предоставленные

xauth list

Но, конечно, это не работает. Обычный X-forwarding через ssh, без sudo, работает.

Настройки sshd одинаковы на 3 серверах:

  1. слаквареРАБОТАЕТ
  2. hpux РАБОТАЕТ
  3. centos7 НЕ РАБОТАЕТ

решение1

Другое решение — объединить файл .Xauthority текущего пользователя с файлом пользователя root.

  1. ssh user@host
  2. измените права доступа к файлу .Xauthority так, чтобы root также имел к нему доступ.
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

Тест

gedit somefile.log

Должно открыться окно gedit.

решение2

Чтобы сделать решение постоянным, вы можете изменить .bashrcфайл пользователя, добавив

if [ -z "$XAUTHORITY" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

более того, вам придется обновить свой sudoersфайл, добавив строку

Defaults env_keep+="DISPLAY XAUTHORITY"

Если у пользователя root есть права на чтение файла пользователя, .Xauthorityвы сможете использовать X-приложения.

решение3

Решение найдено. Альтернативный метод скопирован из этогоблог Используя этот скрипт

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

Или просто войдите как пользователь1

xauth list

su или sudo su пользователь2

xauth add OUTPUTOFXAUTHLIST

решение4

Очень простая общая команда:

sudo xauth merge /home/$USER/.Xauthority

Это активирует среду root и объединяет информацию xauth текущего (не root) пользователя.

Другая альтернатива должна предотвратить проблему с владением, о которой сообщалось в комментариях к Slackware:

cat ~/.Xauthority | sudo xauth merge -

Связанный контент