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.


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

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


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


Vielen Dank für die Angabe einer Antwort, die eine nicht dauerhafte Lösung bietet.
2NinerRomeo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.