ssh und sudo, aber kein $DISPLAY

ssh und sudo, aber kein $DISPLAY

Normalerweise mache ich das auf ssh, um eine X-Anwendung zu erhalten mitsudo su

ssh -X server

OKI Anmeldung

xauth list $DISPLAY

die zu mir zurückkehrt

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

Dann mach ich

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

Und nachdem ich eine X-Anwendung ausgeführt habe, verstehe ich es, es ist richtig.

Das Problem ist auf Centos7, ich

xauth list $DISPLAY

Und es gibt nichts zurück. Ich versuche, MIT Magic Cookies hinzuzufügen, die von

xauth list

Aber natürlich funktioniert es nicht. Das normale X-Forwarding über ssh, ohne sudo funktioniert.

Die Einstellungen von sshd sind auf 3 Servern gleich:

  1. SlackwareWERKE
  2. hpux WERKE
  3. centos7 FUNKTIONIERT NICHT

Antwort1

Eine andere Lösung besteht darin, die .Xauthority-Datei des aktuellen Benutzers mit der des Root-Benutzers zusammenzuführen.

  1. ssh user@host
  2. Ändern Sie die Berechtigungen der .Xauthority-Datei, sodass auch Root darauf zugreifen kann.
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

Prüfen

gedit somefile.log

Es sollte ein Gedit-Fenster öffnen.

Antwort2

Um die Lösung dauerhaft zu machen, können Sie die .bashrcDatei des Login-Benutzers ändern und hinzufügen

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

außerdem müssen Sie Ihre sudoersDatei aktualisieren und die Zeile hinzufügen

Defaults env_keep+="DISPLAY XAUTHORITY"

Wenn Root über Leseberechtigung für die .XauthorityDatei des angemeldeten Benutzers verfügt, können Sie X-Anwendungen verwenden.

Antwort3

Lösung gefunden. Eine alternative Methode, die von diesem kopiert wurdeBlog Mit diesem Skript

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

Oder melden Sie sich einfach als Benutzer1 an

xauth list

su oder sudo su user2

xauth add OUTPUTOFXAUTHLIST

Antwort4

Ein sehr einfacher allgemeiner Befehl:

sudo xauth merge /home/$USER/.Xauthority

Dadurch wird die Root-Umgebung aktiviert und die XAuth-Informationen des aktuellen (nicht Root-)Benutzers zusammengeführt.

Eine weitere Alternative sollte das in den Kommentaren zu Slackware gemeldete Eigentumsproblem verhindern:

cat ~/.Xauthority | sudo xauth merge -

verwandte Informationen