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


18

Après avoir ouvert une session en tant qu'autre utilisateur, comment puis-je exécuter des programmes GUI?

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:~$ 

Réponses:


13

export DISPLAY=:0travaillé pour moi. Assurez-vous d'exécuter la commande sur le système de connexion, pas sur le système auquel vous vous connectez!


2
Sur la machine que j'utilisais pour me connecter, pas sur la machine à laquelle vous vous connectez.
user2938093

ahhh, c'est sur la même boite. comptes diff.
Thufir

1
N'a eu aucun effet sur mon ordinateur
ComputerScientist

ne fonctionne pas pour moi. Je ne sais pas pourquoi cela m'arrive.
Chan Kim

6

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

Exécutez la commande x en tant qu'autre utilisateur à l'aide de xauth

Script bash de wrapper:

Pour plus de commodité, j'ai créé un script bash wrapper , que vous pouvez télécharger /usr/local/bin/xsudoet marquer exécutable ( chmod +x /usr/local/bin/xsudo).

Exécutez ensuite simplement:

xsudo hawat firefox

Alternatives potentielles:

  • En tant qu'alternative beaucoup plus simple, vous pourriez examiner pam_xauth(s. Cette réponse ) Cependant, cela ne fonctionne pas pour moi pour une raison quelconque. (Je reçois toujours l'erreur à propos de Firefox ne pouvant pas se connecter à l'écran à: 0)
  • Dans beaucoup de forums , vous pouvez voir la commande xhost +local:ou similaire, ce qui va faire le gksudo -u hawat firefoxtravail sans aucun script d'emballage. Cependant, sachez 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 y avait autrefois sux , qui a été abandonné pour une raison quelconque - vous pourriez toujours être en mesure de le télécharger et de l'utiliser cependant. Pour autant que je sache, cela n'a fait que quelque chose de similaire à mon script. Malheureusement, je n'ai pas pu savoir pourquoi cela n'est plus maintenu. (Peut-être parce que nous devrions maintenant utiliser pam_xauth à la place - s. Première alternative)

3

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


1

export DISPLAY =: 0 fonctionne très bien mais c'est une solution temporaire car vous devez taper ceci à 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

Par défaut env_keep + = "DISPLAY"

Remarque: Gardez à l'esprit de toujours utiliser "+ =" lors de l'ajout à env_keep. Dans le cas où il y a un autre env_keep avec "=" changez-les en "+ =" car l'utilisation de "=" remplacera les autres valeurs.


FYI: gardez à l'esprit que vous n'êtes pas censé éditer le fichier sudoers directement, mais en utilisant le visudowrapper, qui fournit une vérification d'intégrité avant d'écrire un nouveau fichier sudoers.
Gabriel Fair
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.