webentwicklung-frage-antwort-db.com.de

xterm öffnet sich nicht in Mininet-Hosts. NO SSH, NO VM

Ich habe gerade bunt 17.10 und Mininet 2.2.2 von Packages (Sudo apt-get install mininet) auf meinem Laptop installiert. Nativ, d. H. Ein reales Betriebssystem auf einer realen Maschine, keine virtuellen Maschinen jeglicher Art. Der Laptop ist ein 2017er MacBook Pro 13 "ohne Touchbar (MacBookPro14,1), und Ubuntu läuft auf einem schnellen USB-Stick. Nur der Vollständigkeit halber schreibe ich nicht, dass es relevant ist.

Ich benötige CLI-Zugriff auf jeden Mininet-Host, den ich erstellen möchte, um benutzerdefinierte Tests auszuführen und den Datenverkehr zu überwachen, der in jedem Knoten vorbeigeht.

Auf meinem früheren Laptop hatte ich ein ähnliches Setup, aber mit älteren Versionen von Ubuntu und wahrscheinlich auch Mininet, und es gelang mir, von jedem Mininet-Host, den ich wollte, xterm zu erzeugen. Das Problem ist, ich kann mich überhaupt nicht erinnern, wie ich es gemacht habe =).

echo $DISPLAY gibt :0 zurück, unabhängig davon, ob ich es in einer regulären Shell oder in einem Mininet-Host ausführe, aber in einer regulären Shell xterm öffnet ein xterm-Fenster. Nehmen wir an, h1 ist mein Mininet-Host. Ich starte Mininet mit Sudo mn und bekomme:

  • h1 echo $DISPLAY -> :0
  • xterm h1 -> nichts und nichts passiert
  • h1 xterm & -> nichts und nichts passiert
  • h1 xterm -> No protocol specified. Warning: This program is an suid-root program or is being run by the root user. The full text of the error or warning message cannot be safely formatted in this environment. You may get a more descriptive message by running the program as a non-root user or by removing the suid bit on the executable. xterm: Xt error: Can't open display: %s

Alle Informationen, die ich finden konnte, beziehen sich auf die X11-Weiterleitung mit ssh, und alles, was ich versucht habe, ist fehlgeschlagen.

Irgendeine Idee?

2
Martin

Führen Sie xhost +local: in einem Terminal aus, ohne Superuser zu sein, um das Problem zu beheben. Unter den Details.


Das Problem ist darauf zurückzuführen, dass xterm aus Sicherheitsgründen bei der Authentifizierung als Superuser nicht standardmäßig funktioniert (Mininet muss als Superuser ausgeführt werden).

Sie können überprüfen, ob dies Ihr Problem ist, indem Sie xterm und Sudo xterm in einem Terminal ausführen, wenn Sie wie gewohnt angemeldet sind (wenn Sie etwas wie Sudo su ausgeführt haben, bevor diese Überprüfung sinnlos ist). Wenn xterm geöffnet wird, Sudo xterm jedoch nicht, müssen Sie ausführen

xhost +local:

Sudo xterm sollte jetzt funktionieren, ebenso wie h1 xterm in Mininet. Dies liegt daran, dass Sie mit diesem Befehl den grafischen Serverzugriff auf Anwendungen bereitgestellt haben, die als Sudo oder su ausgeführt werden.

Die Einstellung wird zwischen Neustarts nicht beibehalten und kann mit xhost - wiederhergestellt werden.

Beachten Sie, dass Sie damit jedem Benutzer des Systems oder des Netzwerks Zugriff auf Ihr $ DISPLAY ohne Authentifizierung gewähren ( https://wiki.archlinux.org/index.php/Xhost ).

1
Martin