Gagal terhubung ke Mir: Gagal terhubung ke soket server: Tidak ada file atau direktori tersebut

18

Setelah masuk sebagai pengguna lain bagaimana cara menjalankan program GUI?

thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 
Thufir
sumber

Jawaban:

13

export DISPLAY=:0bekerja untukku. Pastikan Anda menjalankan perintah pada sistem penghubung, bukan pada sistem yang Anda hubungkan!

pengguna2938093
sumber
2
Pada mesin yang saya gunakan untuk menghubungkan, bukan mesin yang Anda hubungkan.
user2938093
ahhh, ini di kotak yang sama. akun diff.
Thufir
1
Tidak memiliki efek apa pun pada komputer saya
ComputerScientist
tidak bekerja untukku. Saya tidak tahu mengapa ini terjadi pada saya.
Chan Kim
6

Jawaban ini berfungsi pada Ubuntu 16.04 dan Mir saya (dengan sedikit adaptasi):

Jalankan perintah x sebagai pengguna lain menggunakan xauth

Skrip bash wrapper:

Untuk kenyamanan, saya membuat skrip bash wrapper , yang mungkin ingin Anda unduh /usr/local/bin/xsudodan tandai yang dapat dieksekusi (chmod +x /usr/local/bin/xsudo ).

Kemudian jalankan:

xsudo hawat firefox

Alternatif Potensial:

  • Sebagai alternatif yang jauh lebih sederhana, Anda mungkin melihat pam_xauth(s. Jawaban ini ) Namun ini tidak berhasil bagi saya untuk beberapa alasan. (Saya masih mendapatkan kesalahan tentang firefox karena tidak dapat terhubung ke layar di: 0)
  • Dalam banyak forum Anda mungkin melihat perintah xhost +local:atau serupa, yang akan membuat gksudo -u hawat firefoxkerja tanpa skrip wrapper. Namun perlu diperhatikan bahwa ini membuka celah keamanan : Setiap pengguna aktif di host lokal Anda akan dapat mengakses keyboard, mouse, layar dll.
  • Dulu ada sux , yang telah dihentikan karena beberapa alasan - Anda mungkin masih dapat mengunduh dan menggunakannya. Sejauh yang saya tahu, itu melakukan sesuatu yang mirip dengan skrip saya hanya lebih banyak. Sayangnya saya tidak bisa mengetahuinya, mengapa ini tidak lagi dipertahankan. (Mungkin karena kita sekarang harus menggunakan pam_xauth sebagai gantinya. - alternatif pertama)
lentschi
sumber
3

Setelah menghabiskan terlalu banyak waktu untuk hal ini, saya menemukan bahwa dengan Gnome di Ubuntu 16.04, nilai yang benar adalah DISPLAY=:1, tidak DISPLAY=:0seperti yang telah ada sejak jaman dahulu.

Peter V. Mørch
sumber
1

export DISPLAY =: 0 berfungsi dengan baik tetapi ini adalah solusi sementara karena Anda perlu mengetik ini setiap kali Anda membuka terminal.

Solusi Permanen: Masalahnya mungkin karena variabel env_keep di / etc / sudoers. Tambahkan baris berikut di akhir / etc / sudoers menggunakan gedit atau menggunakan sudo visudo

Default env_keep + = "DISPLAY"

Catatan: Ingatlah untuk selalu menggunakan "+ =" sambil menambahkan ke env_keep. Jika ada env_keep lain dengan "=" ubah menjadi "+ =" karena menggunakan "=" akan menimpa nilai-nilai lain.

Mahesh Kumar
sumber
FYI: ingatlah bahwa Anda tidak seharusnya mengedit file sudoers secara langsung, tetapi dengan menggunakan visudowrapper, yang menyediakan beberapa pemeriksaan kewarasan sebelum menulis file sudoers baru.
Gabriel Fair