web-dev-qa-db-ja.com

xtermがMininetホスト内で開かない。 SSHなし、VMなし

ラップトップにbunt 17.10、およびMininet 2.2.2をパッケージ(Sudo apt-get install mininet)からインストールしました。ネイティブ、つまり、実際のマシン上の実際のOS あらゆる種類の仮想マシンなし。ラップトップは2017 MacBook Pro 13インチのタッチバーなし(MacBookPro14,1)であり、Ubuntuは高速USBキーで実行されます。完全を期すために書いているだけで、関連性はないと思います。

カスタムテストを実行し、各ノードを通過するトラフィックを観察するには、作成する各ミニネットホストへのCLIアクセスが必要です。

以前のラップトップでも同様のセットアップを行いましたが、Ubuntuの古いバージョンとおそらくMininetを使用し、必要なすべてのMininetホストからxtermsを生成することができました。問題は、どうやってやったのかまったく覚えていないことです=)。

echo $DISPLAY:0を返します。通常のシェルまたはミニネットホストで実行しても、通常のシェルでxtermはxtermウィンドウを開きます。 h1が私のミニネットホストであるとします。 Sudo mnでMininetを起動すると、次の結果が得られます。

  • h1 echo $DISPLAY-> :0
  • xterm h1->何も、何も起こらない
  • h1 xterm &->何も、何も起こらない
  • 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

私が見つけることができるすべての情報は、sshでのX11転送に関連しており、私が試したすべてが失敗しました。

何か案が?

2
Martin

問題を解決するには、スーパーユーザーにならずに端末でxhost +local:を実行します。詳細の下。


この問題は、セキュリティ上の理由から、スーパーユーザーとして認証された場合にデフォルトでxtermが機能しないためです(ミニネットはスーパーユーザーとして実行する必要があります)。

これが問題かどうかを確認するには、通常どおりログインしているときに端末でxtermSudo xtermを実行します(このチェックが無意味になる前にSudo suのようなことをした場合)。 xtermが開くが、Sudo xtermが開かない場合は、実行する必要があります

xhost +local:

Sudo xtermは、Mininet内のh1 xtermと同様に動作するはずです。これは、そのコマンドを使用して、Sudoまたはsuとして実行されているアプリケーションへのグラフィカルサーバーアクセスを提供したためです。

設定は再起動間は保持されず、xhost -で元に戻すことができます。

これを行うことにより、システムまたはネットワーク上のすべてのユーザーに認証なしで$ DISPLAYへのアクセス権を与えることに注意してください( https://wiki.archlinux.org/index.php/Xhost )。

1
Martin