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.

Apurba
la source
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
Thor
la source
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

Apurba
la source
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

adabru
la source
Merci d'avoir fourni une réponse qui fournit une solution non permanente.
2NinerRomeo