Xforwarding не позволяет переключать пользователей

7992
Jarvin

Я ssh'd в удаленный компьютер, и xforwarding работает нормально ... но как только я "sudo su -" или "sudo su user2", он больше не Xforwards ничего, что дает мне ошибку:

X11 connection rejected because of wrong authentication. xterm Xt error: Can't open display: localhost:10.0 

Есть идеи?

Спасибо

7
это в большей степени связано с разрешениями X, чем с переадресацией X - у пользователя, вошедшего в систему с помощью SSH, есть разрешение на подключение к дисплею X, но при переключении пользователей с помощью «sudo» пользователь, на которого вы переключаетесь, не имеет эти разрешения. quack quixote 14 лет назад 1
Должен быть обходной путь, хотя ... У меня есть root-доступ, я должен иметь возможность запускать приложение, отправленное на X11, под другим пользователем. Как мне заставить его работать? Jarvin 14 лет назад 0

5 ответов на вопрос

6
Vaibhav Bajpai
  1. Включите пересылку X-11 в вашем клиенте
  2. Войдите как ваш обычный пользователь
  3. echo $DISPLAY чтобы получить связанный дисплей
  4. xauth listнайдите номер дисплея, который соответствует тому, что вы нашли в # 3, и скопируйте его
  5. Судо в корне xauth add <paste in what you copied from #4>
  6. Теперь вы можете выполнять команды от имени пользователя root и сможете установить соединение переадресации X11.
4
tzot

Перед вами sudoсделайте это:

$ xauth extract /tmp/xauthstuff $DISPLAY 

После sudoэтого сделайте это:

# xauth merge /tmp/xauthstuff 

Это работает для вас?

PS не забудьте rm /tmp/xauthstuffпотом

I tried that command and it failed: $ xauth extract /tmp/xauthstuff $DISPLAY No matches found, authority file "/tmp/xauthstuff" not written Ideas? djb 13 лет назад 3
Что производит `echo $ DISPLAY`? tzot 11 лет назад 0
DISPLAY имеет значение localhost: 10.0 djb 10 лет назад 0
3
gannable

I don't have access to root account to do any of the above, so here is a work around that I used.

First, ssh to your account like you normally do and test everything is working.

ssh -Y <you>@<your_server> 

I usually just fire up an XTerm to ensure I have connectivity. If all good, copy .XAuthority file that is in <you> home directory and put it in a public directory.

cp ~/.Xauthority /tmp/tempXAuth

Make sure you chmod 777 on that file in the public directory so that the sudo account can use it in the later step.

chmod 777 /tmp/tempXAuth

now sudo to the user you need to do work as

sudo su - <other_user>

once you are <other_user>, back up the existing .Xauthority and then copy the "good" one over.

cp ~/.Xauthority ~/.Xauthority.bak cp /tmp/tempXAuth ~/.Xauthority 

you should be able to run any X programs and have them authenticate with your current XServer session.

2
Tim

Прежде чем sudo su user2проверять разрешения для вашего $ XAUTHORITY: Если после переключения пользователя вы по-прежнему ссылаетесь на тот же $ XAUTHORITY, но потеряли права доступа к файлу, то это нарушит пересылку X11. В моем случае быстрым решением было настроить права доступа к файлу $ XAUTHORITY перед переключением пользователя. Имейте в виду, что если пользователи, которым вы не доверяете, получают доступ к вашему файлу $ XAUTHORITY, это может быть проблемой безопасности.
echo $XAUTHORITY
ls -l $XAUTHORITY





1
user2571962

Как пользователь, который вы обычно входите в систему как тип:

cd  sudo cp .Xauthority /root/ 

Затем вы можете переключиться на root с помощью:

sudo su 

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