GNU/Linux >> LINUX-Kenntnisse >  >> Linux

X11-Anwendungen können nicht nach „su“ oder „su -“ für einen anderen Benutzer gestartet werden

Um Zugriff auf die X-Client-Anwendungen wie system-config-date, xclock, vncviewer zu erhalten, müssen wir die DISPLAY-Einstellungen eines Remote-Hosts auf den lokalen Server exportieren. Dies geschieht üblicherweise mit den folgenden Befehlen.

# ssh root@remotehost

remotehost# export DISPLAY=x.x.x.x:y.y

Wobei x.x.x.x:y.y – die Anzeigeeinstellungen des Systems sind, von dem aus Sie sich mit dem Remote-Host verbunden haben.

Sie können auch die Option -X mit ssh verwenden, um das DISPLAY direkt auf den Remote-Host zu exportieren.

# ssh -X root@remotehost

Aber wenn Sie jetzt versuchen, zu einem anderen Benutzer auf dem Remote-System zu wechseln und die Anzeige erneut zu exportieren, erhalten Sie einen Fehler – „Fehler:Anzeige kann nicht geöffnet werden:“.

# ssh -X root@remotehost
# su - [username]
# export DISPLAY=x.x.x.x:y.y 
# xclock
Error: Can't open display: x.x.x.x:y.y

X11-Weiterleitung für sudo-Benutzer

Es reicht nicht aus, nur das DISPLAY einzustellen. Die X-Authentifizierung basiert auf Cookies, daher ist es notwendig, das Cookie zu setzen, das von dem Benutzer verwendet wird, der die Verbindung initiiert hat. Das folgende Verfahren ermöglicht es einem sudo-Benutzer, den ssh-basierten X11-Tunnel zu verwenden:

1. Verbinden Sie den Remote-Host über die Option -X mit ssh.

# ssh -X root@remote-host

2. Listen Sie nun das Cookies-Set für den aktuellen Benutzer auf.

# xauth list $DISPLAY
node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
localhost:10.0

3. Wechseln Sie mit sudo zu einem anderen Benutzerkonto. Fügen Sie das Cookie aus der obigen Befehlsausgabe dem sudo-Benutzer hinzu.

# sudo su - [user]
# xauth add node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa

4. Exportieren Sie die Anzeige aus Schritt 2 erneut für den sudo-Benutzer. Probieren Sie den Befehl xclock aus, um zu überprüfen, ob die x-Client-Anwendungen wie erwartet funktionieren.

# export DISPLAY=localhost:10.0
# xclock


Linux
  1. Su-Optionen – Befehl als anderer Benutzer ausführen?

  2. Nach der Installation von Jenkins kann Benutzer Jenkins nicht aufgerufen werden

  3. Der Docker-Gruppe kann kein Benutzer hinzugefügt werden

  4. Wie kann ich einen Nicht-Login-Benutzer erstellen?

  5. Wie kann ich mehrere Bildschirmsitzungen automatisch starten?

Können Sie Linux-Anwendungen mit Xamarin entwickeln?

Wie kann ich alle Dateien eines Benutzers auf einen anderen Benutzer übertragen?

Wie kann ich einen Befehl nach dem Booten ausführen?

Wie kann ich verhindern, dass ein Benutzer Dateien auf eine andere Festplatte kopiert?

Wie kann ich unter Linux einen Benutzernamen anhand der ID suchen?

Wie kann ich einem Benutzer erlauben, mit einem anderen zu su, ohne Root-Zugriff zuzulassen?