web-dev-qa-db-fra.com

Échec de la connexion à Mir: Échec de la connexion au socket du serveur: Aucun fichier ou répertoire de ce type.

Une fois connecté en tant qu'utilisateur, comment exécuter les programmes graphiques?

thufir@doge:~$ 
thufir@doge:~$ Sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 
16
Thufir

export DISPLAY=:0 a fonctionné pour moi. Assurez-vous d'exécuter la commande sur le système qui se connecte, et non sur le système auquel vous vous connectez!

12
user2938093

Cette réponse fonctionne sur mon Ubuntu 16.04 et Mir (avec de légères adaptations):

Exécuter x en tant qu'utilisateur utilisant xauth

Wrapper bash script:

Par souci de commodité, j'ai créé un script wrapper bash , que vous voudrez peut-être télécharger sur /usr/local/bin/xsudo et marquer exécutable (chmod +x /usr/local/bin/xsudo).

Puis lancez simplement:

xsudo hawat firefox

Alternatives potentielles:

  • Comme alternative beaucoup plus simple, vous pourriez regarder dans pam_xauth (s. cette réponse ) Cependant, cela ne fonctionne pas pour moi pour une raison quelconque. (J'obtiens toujours le message d'erreur indiquant que Firefox ne parvient pas à se connecter à l'écran à: 0)
  • Dans de nombreux forums, vous pouvez voir la commande xhost +local: ou similaire, qui va faire fonctionner gksudo -u hawat firefox sans script. Cependant ​​soyez conscient que cela ouvre une faille de sécurité: Tout utilisateur actif sur votre hôte local pourra accéder à votre clavier, votre souris, votre écran, etc.
  • Il existait jadis sux , qui a été interrompu pour une raison quelconque - vous pourrez peut-être quand même le télécharger et l’utiliser. Autant que je sache, il a fait quelque chose de similaire à mon script, mais beaucoup plus. Malheureusement, je n'ai pas pu savoir pourquoi ce n'est plus maintenu. (Peut-être parce que nous devrions maintenant utiliser pam_xauth à la place - s. Première alternative)
6
lentschi

Après avoir passé beaucoup trop de temps là-dessus, j'ai découvert qu'avec Gnome sur Ubuntu 16.04, la valeur correcte est DISPLAY=:1, et non DISPLAY=:0, comme il l'a été depuis des temps immémoriaux.

3
Peter V. Mørch

export DISPLAY =: fonctionne bien, mais il s’agit d’une solution temporaire, car vous devez la saisir à chaque fois que vous ouvrez le terminal.

Solution permanente: Le problème peut être dû à la variable env_keep dans/etc/sudoers. Ajoutez la ligne suivante à la fin de/etc/sudoers en utilisant gedit ou en utilisant Sudo visudo

Valeurs par défaut env_keep + = "DISPLAY"

Remarque: N'oubliez pas de toujours utiliser "+ =" lors de l'ajout à env_keep. Dans le cas où il y aurait un autre env_keep avec "=", changez-le en "+ =" car utiliser "=" écrasera les autres valeurs.

1
Mahesh Kumar