Es kann keine Verbindung zum X-Server hergestellt werden: 0.0 als Superuser


10

Wenn ich online bin, wird folgende Fehlermeldung angezeigt und das Tool startet nicht:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0

Aber alles ist in Ordnung, wenn ich kein Superuser bin. Warum das?

Bearbeiten

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified

irgendein Vorschlag?

Ebenfalls

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"

Das ist ein Klassiker. Sie können Programme verwenden export $(dbus-launch)oder verwenden xhost [+], um sie mit X und Ihrem Superuser-Konto zu starten.
41754

Haben beide, siehe die Bearbeitung oben
msz

Möglicherweise müssen $ xhostSie den aktuellen Zugriff anzeigen und $ xhost +den Zugriff von einem beliebigen Host aus aktivieren. Sie tun dies oft von einem virtuellen Terminal aus, von dem Sie sicher sind, dass es Programme mit X
erzeugen

@galegosimpatico: Warum sollte das Starten eines dbus-Servers dieses Problem lösen?
Bananguin

Was zeigt sich echo $DISPLAY, wenn Sie kein Superuser sind ? Zu welchem ​​Benutzer gehört der xserver-Prozess, den Sie verwenden möchten? (Sie können letzteres herausfinden, indem Sie zum Beispiel verwenden ps faux)
Bananguin

Antworten:


12

Ein X-Programm benötigt zwei Informationen, um eine Verbindung zu einem X-Display herzustellen.

  • Es braucht die Adresse des Displays, die in der Regel ist , :0wenn Sie in lokal oder angemeldet sind :10, :11usw. , wenn ich ist in der Ferne angemeldet (aber die Zahl kann je nach ändern , wie viele X - Verbindungen sind aktiv). Die Adresse der Anzeige wird normalerweise in der DISPLAYUmgebungsvariablen angezeigt .

  • Es benötigt das Passwort für die Anzeige. X-Display-Passwörter werden als magische Cookies bezeichnet . Magische Cookies werden nicht direkt angegeben: Sie werden immer in X-Berechtigungsdateien gespeichert, bei denen es sich um eine Sammlung von Datensätzen der Form „Anzeige :42hat Cookie 123456“ handelt. Die X-Berechtigungsdatei wird normalerweise in der XAUTHORITYUmgebungsvariablen angegeben. Wenn $XAUTHORITYnicht festgelegt, verwenden Programme ~/.Xauthority.

Siehe Öffnen eines Fensters auf einer Remote-X-Anzeige (warum "Anzeige kann nicht geöffnet werden")? für mehr Details.

In Ihrem Fall DISPLAYist festgelegt, aber Programme können die Cookie-Datei offensichtlich nicht finden. Überprüfen Sie den Wert von XAUTHORITYin Ihrer Sitzung und darunter su.

Wenn XAUTHORITYdies in Ihrer Sitzung nicht festgelegt ist und sudie HOMEUmgebungsvariable auf das Basisverzeichnis von root festgelegt wird, müssen Sie festlegen XAUTHORITY, /home/msz/.Xauthoritywo /home/mszsich Ihr Basisverzeichnis befindet.

Wenn suentfernt XAUTHORITYvon der Umgebung, es entweder zurückgestellt oder configure sunicht , dies zu tun.

Wenn sich Ihr Home-Verzeichnis auf einigen Dateisystemen wie NFS befindet, kann root es möglicherweise nicht direkt lesen. In diesem Fall können Sie die .XauthorityDatei an einen anderen Speicherort in einem Nicht-NFS-Dateisystem kopieren :

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY

1
Ich habe einen symbolischen Link erstellt und es hat auch funktioniert. Hier ist es:ln -s /home/otheruser/.Xauthority ~
Kann Geliş

XAUTHORITY wurde für mich als eine Datei festgelegt, die nicht mehr existierte:
pbhj

4

Sie führen xhost als root aus!

Führen Sie xhost als normalen Benutzer aus xhost +, werden Sie root und versuchen Sie es erneut.

Übrigens, wie andere darauf hingewiesen haben, xhost +erlaubt es jedem Benutzer von jedem Host


Viele moderne Systeme sind so eingerichtet, dass xhostsie nicht funktionieren. Wenn ja, dann zumindest laufen xhost +localhost, nicht xhost +!
Gilles 'SO - hör auf böse zu sein'

Verstehe, das ist ein guter Punkt. Danke für deinen Rat.
X Tian

0

XAUTHORITY wurde für mich als eine Datei festgelegt, die nicht mehr existiert:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

So tat ich

unset XAUTHORITY

und konnte dann mit kdesudo (in diesem Fall kdesudo bleachbit) eine Verbindung zu meiner App als root herstellen.


0

Als normaler Benutzer ausführen

xhost + localhost

dann aktivieren Sie Super User durch

sudo su 

Zum Schluss gehen Sie zum Serverbeispiel

cd /usr/local/Ampps

endlich laufen ./Ampps

Danke mir im Jahr 2020


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.