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.