Tidak dapat terhubung ke server X: 0,0 sebagai superuser

10

Ketika saya online, saya mendapatkan kesalahan berikut dan alat tidak memulai:

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

Tapi semuanya baik-baik saja ketika saya bukan pengguna super. Kenapa begitu?

Edit

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

ada saran?

Juga

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"
msz
sumber
Ini klasik. Anda dapat melakukan export $(dbus-launch)atau menggunakan xhost [+]untuk dapat meluncurkan program menggunakan X dan akun pengguna super Anda.
41754
Apakah keduanya, lihat edit di atas
msz
Mungkin $ xhostuntuk melihat akses saat ini dan $ xhost +mengaktifkan akses dari host mana pun. Anda sering melakukan ini dari terminal virtual yang Anda tahu pasti dapat menelurkan program menggunakan X.
41754
@galegosimpatico: mengapa meluncurkan server dbus menyelesaikan masalah ini?
Bananguin
Saat Anda bukan pengguna super, apa yang echo $DISPLAYditampilkan? Pengguna mana yang dimiliki oleh proses xserver, yang ingin Anda gunakan, milik? (Anda dapat menemukan yang terakhir dengan menggunakan misalnya ps faux)
Bananguin

Jawaban:

12

Program X membutuhkan dua informasi untuk dapat terhubung ke tampilan X.

  • Perlu alamat tampilan, yang biasanya :0ketika Anda login secara lokal atau :10,, :11dll ketika Anda login jarak jauh (tetapi jumlahnya dapat berubah tergantung pada berapa banyak koneksi X yang aktif). Alamat tampilan biasanya ditunjukkan dalam DISPLAYvariabel lingkungan.

  • Perlu kata sandi untuk tampilan. Kata sandi tampilan X disebut cookie ajaib . Cookie ajaib tidak ditentukan secara langsung: cookie selalu disimpan dalam file otoritas X, yang merupakan kumpulan catatan dari bentuk "tampilan :42memiliki cookie 123456". File otoritas X biasanya ditunjukkan dalam XAUTHORITYvariabel lingkungan. Jika $XAUTHORITYtidak diatur, gunakan program ~/.Xauthority.

Lihat Membuka jendela pada tampilan X jarak jauh (mengapa "Tidak dapat membuka layar")? untuk lebih jelasnya.

Dalam kasus Anda, DISPLAYdiatur tetapi program ternyata tidak dapat menemukan file cookie. Periksa nilai XAUTHORITYdalam sesi Anda dan di bawah su.

Jika XAUTHORITYtidak diatur dalam sesi Anda dan sumenetapkan HOMEvariabel lingkungan ke direktori home root, maka Anda perlu set XAUTHORITYke /home/msz/.Xauthoritymana /home/mszadalah direktori home Anda.

Jika sumenghapus XAUTHORITYdari lingkungan, masukkan kembali, atau konfigurasikan suuntuk tidak melakukan ini.

Jika direktori home Anda ada di beberapa sistem file seperti NFS, root mungkin tidak dapat membacanya secara langsung. Dalam hal ini, Anda dapat menyalin .Xauthorityfile ke lokasi yang berbeda di sistem file non-NFS:

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Saya membuat tautan simbolik dan berhasil juga. Ini dia:ln -s /home/otheruser/.Xauthority ~
Can Geliş
XAUTHORITY bagi saya ditetapkan sebagai file yang tidak lagi ada:
pbhj
5

Anda menjalankan xhost sebagai root!

jalankan xhost sebagai pengguna normal xhost +, lalu jadikan root lalu coba lagi.

btw seperti yang ditunjukkan orang lain xhost +mengizinkan pengguna dari host mana pun

X Tian
sumber
Banyak sistem modern diatur sehingga xhosttidak berfungsi. Jika ya, maka setidaknya jalankan xhost +localhost, tidak xhost +!
Gilles 'SANGAT berhenti menjadi jahat'
Pahami, itu poin yang bagus. Terima kasih atas saranmu.
X Tian
Itu masalah saya! Terima kasih, itu menyelesaikan semuanya! Saya hanya menjalankannya dari non-root.
Quidam
0

XAUTHORITY untuk saya ditetapkan sebagai file yang tidak ada lagi:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

Jadi saya lakukan

unset XAUTHORITY

dan kemudian dapat terhubung ke aplikasi saya sebagai root menggunakan kdesudo (dalam hal ini kdesudo bleachbit)

pbhj
sumber
0

Jalankan sebagai pengguna normal

xhost + localhost

kemudian aktifkan pengguna super dengan

sudo su 

akhirnya masuk ke contoh server

cd /usr/local/Ampps

akhirnya jalankan ./Ampps

terima kasih pada tahun 2020

Tuan Mash
sumber