Impossible de se connecter à X Server lors de l'exécution de l'application avec sudo


30

Lorsque j'exécute un logiciel à l'aide de la sudocommande, il affiche une erreur comme

cannot connect to X server

Par exemple, si j'exécute la commande suivante:

$ sudo gedit /etc/profile

Je reçois la commande suivante

(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr' 
exited with non-zero exit status 1: 
Autolaunch error: X11 initialization failed. 
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.

Ou si je cours super-boot-manager, j'obtiens l'erreur suivante

buc: cannot connect to X server

Veuillez aider.


D'où fuyez-vous super-boot-manger?
Thor

J'ai d'abord essayé de courir super-boot-managerdirectement depuis luncher d'unité, cela n'a pas fonctionné. Ensuite, je l'ai essayé depuis le terminal, puis j'ai eu ces massages d'erreur.
Apurba

Comme dans un terminal au sein de l'environnement utilisateur graphique? Qu'est-ce que: echo $DISPLAYdire? Vous devez exécuter sans sudoque super-boot-managerfonctionne en sudointerne.
Thor

echo $DISPLAYdonne :0.0. Et je ne cours pas super-boot-managercomme sudo. J'exécute simplement en utilisant la commande super-boot-managerdu terminal.
Apurba

1
Enfin, le problème est résolu. Je viens d'ajouter la ligne: Defaults env_keep="DISPLAY XAUTHORITY"à la fin de visudo. Merci à tous, spécialement à @Thor pour son aimable aide.
Apurba

Réponses:


39

Vous devez autoriser l'utilisateur root à accéder au serveur X:

xhost local:root

Et pointez la commande vers la droite DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile

Cela a résolu le problème de l'ouverture en gedittant que sudo, mais ne peut toujours pas déjeunersuper-boot-manager . Il montre la même erreur
Apurba

15

Enfin, le problème est résolu. Je viens d'ajouter la ligne:

Par défaut env_keep = "DISPLAY XAUTHORITY"

à la fin de visudo.

Pour ce faire, vous devez exécuter

sudo visudo

il ouvrira le fichier puis ajoutera la ligne ci-dessus à la fin.

Merci à tous, spécialement @Thor pour votre aide


1
Par défaut env_keep = "DISPLAY" fonctionne pour moi.
bagustris

J'ai toujours cherché haut et bas cette réponse. J'aimerais pouvoir vous voter plusieurs fois pour vos réponses. Merci beaucoup! :)
Ev-

4

Compléter la réponse de @ Thor:

Courez xhost local:rootavant sudo gedit. Pour rendre cela permanent, ajoutez la ligne

xhost local:root

dans le fichier ~ / .xinitrc 1 . Créez le fichier s'il n'existe pas.


[1] /ubuntu//a/720120/452398


Merci d'avoir fourni une réponse qui fournit une solution non permanente.
2NinerRomeo
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.