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 passierth1 xterm &
-> nichts und nichts passierth1 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?
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 ).