Verbindung zu X Server kann nicht hergestellt werden, wenn die App mit sudo ausgeführt wird

29

Wenn ich eine Software mit einem sudoBefehl starte, wird ein Fehler wie angezeigt

cannot connect to X server

Zum Beispiel, wenn ich den folgenden Befehl ausführe:

$ sudo gedit /etc/profile

Ich bekomme folgenden Befehl

(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.

Oder wenn ich laufe bekomme super-boot-managerich folgende Fehlermeldung

buc: cannot connect to X server

Bitte helfen Sie.

Apurba
quelle
Woher rennst du super-boot-manger?
Thor
Zuerst habe ich versucht, super-boot-managerdirekt von Unity Luncher zu laufen , es hat nicht funktioniert. Dann habe ich es am Terminal ausprobiert, dann habe ich diese Fehlermeldung bekommen.
Apurba
Wie in einem Terminal innerhalb der grafischen Benutzerumgebung? Was heißt: echo $DISPLAYsagen? Sie sollten es ohne laufen sudowie super-boot-managerläuft sudointern.
Thor
echo $DISPLAYgibt :0.0. Und ich laufe nicht super-boot-managerals sudo. Ich benutze nur den Befehl super-boot-managervom Terminal.
Apurba,
1
Endlich ist das Problem gelöst. Ich habe gerade die Zeile hinzugefügt: Defaults env_keep="DISPLAY XAUTHORITY"am Ende von visudo. Vielen Dank an alle, speziell @Thor für freundliche Hilfe.
Apurba

Antworten:

39

Sie müssen dem Root-Benutzer Zugriff auf den X-Server gewähren:

xhost local:root

Und weise den Befehl nach rechts DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile
Thor
quelle
Das löste das Problem mit dem Öffnen geditwie sudo, aber immer noch nicht zu Mittag essen super-boot-manager. Es zeigt den gleichen Fehler
Apurba
15

Endlich ist das Problem gelöst. Ich habe gerade die Zeile hinzugefügt:

Defaults env_keep = "XAUTHORITY ANZEIGEN"

am Ende von visudo.

Um das zu tun, musst du rennen

sudo visudo

Es öffnet die Datei und fügt am Ende die obige Zeile hinzu.

Vielen Dank an alle, speziell @Thor für freundliche Hilfe

Apurba
quelle
1
Defaults env_keep = "DISPLAY" funktioniert bei mir.
Bagustris
Ich habe immer nach dieser Antwort gesucht. Ich wünschte, ich könnte beide mehrmals für Ihre Antworten stimmen. Vielen Dank! :)
Ev-
4

Ergänzung @ Thors Antwort:

Laufen Sie xhost local:rootvorher sudo gedit. Um dies dauerhaft zu machen, fügen Sie die Linie hinzu

xhost local:root

in die Datei ~ / .xinitrc 1 . Erstellen Sie die Datei, wenn sie nicht vorhanden ist.


[1] https://askubuntu.com/a/720120/452398

adabru
quelle
Vielen Dank für die Angabe einer Antwort, die eine nicht dauerhafte Lösung bietet.
2NinerRomeo