web-dev-qa-db-fra.com

xterm ne s'ouvre pas à l'intérieur des hôtes Mininet. NO SSH, NO VM

Je viens d'installer bunt 17.10 et Mininet 2.2.2 à partir de paquets (Sudo apt-get install mininet) sur mon ordinateur portable. Nativement, c’est-à-dire un vrai système d’exploitation sur une vraie machine, pas de machine virtuelle. L'ordinateur portable est un MacBook Pro 13 pouces 2017 sans barre tactile (MacBookPro14,1), et Ubuntu fonctionne sur une clé USB rapide; il suffit d'écrire pour être complet, je ne pense pas que ce soit pertinent.

J'ai besoin d'un accès CLI à chaque hôte Mininet que je vais créer pour exécuter des tests personnalisés et observer le trafic qui passe dans chaque nœud.

Sur mon ancien ordinateur portable, j'avais une configuration similaire, mais avec les anciennes versions d'Ubuntu et probablement aussi de Mininet, et j'ai réussi à pouvoir générer xterms de chaque hôte Mininet que je voulais. Le problème est que je ne me souviens pas du tout comment je l’ai fait =).

echo $DISPLAY renvoie :0 si je l'exécute dans un shell standard ou dans un hôte Mininet, mais dans un shell standard xterm ouvre une fenêtre xterm. Disons que h1 est mon hôte Mininet. Je lance Mininet avec Sudo mn et je reçois:

  • h1 echo $DISPLAY -> :0
  • xterm h1 -> rien et rien ne se passe
  • h1 xterm & -> rien et rien ne se passe
  • 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

Toutes les informations que je pouvais trouver sont liées au transfert X11 avec ssh, et tout ce que j'ai essayé a échoué.

Une idée?

2
Martin

Exécutez xhost +local: dans un terminal sans être superutilisateur pour résoudre le problème. Ci-dessous les détails.


Le problème est dû au fait que xterm ne fonctionne pas par défaut lorsqu'il est authentifié en tant que superutilisateur (Mininet doit être exécuté en tant que superutilisateur), pour des raisons de sécurité.

Vous pouvez vérifier si cela est votre problème en exécutant xterm et Sudo xterm dans un terminal lors de la connexion habituelle (si vous avez fait quelque chose comme Sudo su avant que cette vérification soit inutile). Si xterm s'ouvre mais que Sudo xterm ne le fait pas, vous devez exécuter

xhost +local:

Sudo xterm devrait fonctionner maintenant, ainsi que h1 xterm dans Mininet. En effet, avec cette commande, vous avez fourni un accès serveur graphique aux applications exécutées en tant que Sudo ou su.

Le paramètre ne persistera pas entre les redémarrages et il peut être annulé avec xhost -.

Veuillez noter qu'en faisant cela, vous donnez à tout utilisateur du système ou du réseau un accès à votre $ DISPLAY sans authentification ( https://wiki.archlinux.org/index.php/Xhost ).

1
Martin