Impossibile connettersi al server X: 0.0 come superutente


10

Quando sono online, visualizzo il seguente errore e lo strumento non si avvia:

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

Ma va tutto bene quando non sono un superutente. Perché quel?

modificare

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

qualche suggerimento?

Anche

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

Questo è un classico Puoi fare export $(dbus-launch)o usare xhost [+]per essere in grado di avviare programmi usando X e il tuo account superutente.
41754

Ho

Potrebbe essere $ xhostquello di vedere l'accesso corrente e $ xhost +abilitare l'accesso da qualsiasi host. Lo fai spesso da un terminale virtuale che sai per certo che può generare programmi usando X.
41754

@galegosimpatico: perché il lancio di un server dbus potrebbe risolvere questo problema?
Bananguin,

Quando non sei un superutente, cosa echo $DISPLAYmostra? A quale utente appartiene il processo xserver che desideri utilizzare? (puoi scoprirlo usando ad esempio ps faux)
Bananguin

Risposte:


12

Un programma X necessita di due informazioni per connettersi a un display X.

  • Richiede l'indirizzo del display, che in genere è :0quando si è connessi localmente o :10, :11ecc. Quando si è effettuato l'accesso in remoto (ma il numero può cambiare a seconda di quante connessioni X sono attive). L'indirizzo del display è normalmente indicato nella DISPLAYvariabile d'ambiente.

  • Ha bisogno della password per il display. Le password di visualizzazione X sono chiamate cookie magici . I cookie magici non vengono specificati direttamente: sono sempre memorizzati in file di autorità X, che sono una raccolta di record del modulo "display :42has cookie 123456". Il file di autorità X viene normalmente indicato nella XAUTHORITYvariabile di ambiente. Se $XAUTHORITYnon impostato, i programmi usano ~/.Xauthority.

Vedere Apri una finestra su un display X remoto (perché "Impossibile aprire il display")? per ulteriori dettagli.

Nel tuo caso, DISPLAYè impostato ma i programmi evidentemente non riescono a trovare il file cookie. Controlla il valore di XAUTHORITYnella sessione e sotto su.

Se XAUTHORITYnon è impostato nella sessione e suimposta la HOMEvariabile di ambiente home directory di root, quindi è necessario impostare XAUTHORITYa /home/msz/.Xauthoritydove /home/mszè la vostra directory home.

Se viene surimosso XAUTHORITYdall'ambiente, ripristinalo o configura di sunon farlo.

Se la tua home directory si trova su alcuni filesystem come NFS, root potrebbe non essere in grado di leggerlo direttamente. In tal caso, è possibile copiare il .Xauthorityfile in una posizione diversa su un filesystem non NFS:

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

1
Ho creato un collegamento simbolico e ha funzionato anche. Eccolo:ln -s /home/otheruser/.Xauthority ~
Can Geliş

XAUTHORITY per me è stato impostato come un file che non esisteva più:
pbhj

5

Stai eseguendo xhost come root!

eseguire xhost come utente normale xhost +, radice quindi diventare riprovare.

tra l'altro, come altri hanno sottolineato, xhost +consente a qualsiasi utente di qualsiasi host


Molti sistemi moderni sono installati in modo che xhostnon funzionino. Se lo fa, almeno corri xhost +localhost, no xhost +!
Gilles 'SO- smetti di essere malvagio' il

Capisci, questo è un buon punto. Grazie per il tuo consiglio.
X Tian,

Era il mio problema! Grazie, ha risolto tutto! L'ho semplicemente eseguito da non root.
Quidam

0

XAUTHORITY per me è stato impostato come un file che non esisteva più:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

Così ho fatto

unset XAUTHORITY

ed è stato quindi in grado di connettermi alla mia app come root usando kdesudo (in questo caso kdesudo bleachbit)


0

Esegui come utente normale

xhost + localhost

quindi abilitare il superutente entro

sudo su 

finalmente vai all'esempio del server

cd /usr/local/Ampps

finalmente eseguito ./Ampps

grazie nel 2020


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.