"Tidak ada protokol yang ditentukan" saat menjalankan vim dengan sudo

9

Baru-baru ini saya mulai mendapatkan "Tidak ada protokol yang ditentukan" saat menggunakan sudo vim. Kurasa itu hanya peringatan, karena semuanya berjalan normal (saya bisa membuka, mengedit, dan menyimpan file). Pesan tidak muncul jika saya gunakan sudo -E vimjadi saya pikir saya melakukan kesalahan saat mengedit /etc/profilebaru-baru ini, tapi saya tidak yakin. Bagaimana saya bisa memperbaikinya?

phhehehe
sumber
1
Tidak semuanya berjalan normal. Dukungan mouse tidak berfungsi, perlu protokol seperti gpm atau protokol mouse xterm.
ninjalj

Jawaban:

8

Pembaruan terkini mengubah pengaturan default untuk sudo. Jika ada yang punya masalah ini periksa sudoerkonfigurasi Anda . Dari contoh di halaman manual:

# Run X applications through sudo; HOME is used to find the
# .Xauthority file.  Note that other programs use HOME to find
# configuration files and this may lead to privilege escalation!
Defaults env_keep += "DISPLAY HOME"

Pastikan Anda memiliki sesuatu seperti itu di /etc/sudoers(gunakan visudountuk mengedit file jika Anda perlu).

EDIT: Saya tidak tahu persis sejak kapan, tetapi setidaknya xauth 1.0.9 mendukung variabel lingkungan XAUTHORITY. Menyetel itu dan membiarkan HOME tidak tersentuh, juga memperbaiki peringatan protokol dan merupakan solusi yang lebih baik, karena tidak ada sumber daya IPC yang dapat ditulis (soket / pipa) yang dibuat mengarah ke sumber daya root (satu jalan untuk eskalasi hak istimewa). xauth tidak secara otomatis mengekspor variabel ke lingkungan, jadi cara terbaik adalah mengaturnya di inisialisasi shell Anda.

phhehehe
sumber
3

Menurut utas ini , ada dua kemungkinan solusi untuk masalah Anda:

Letakkan baris berikut di .bashrcskrip pengguna root saya

export XAUTHORITY=/home/<user>/.Xauthority

kemudian saya menyalin .Xauthority ke root juga, yaitu

sudo cp ~/.Xauthority /root

dan sekarang peringatan itu hilang.

Anda juga dapat mencoba menjalankan via gksudo.

Bagaimanapun, keduanya patut dicoba ...

Justin Ethier
sumber
Saya menyalin .Xauthorityke /rootdan hanya itu!
phunehehe
Tidak, saya salah, setelah mem-boot ulang, saya mendapat kesalahan "kunci tidak sah".
phunehehe
1
Sejauh yang saya ingat konten perubahan file .Xauthority, jadi Anda harus symlink daripada menyalin.
Adam Byrtek
2

Meskipun pertanyaan sudah memiliki beberapa jawaban, tidak ada yang berhasil untuk saya sepenuhnya. Saya menyelesaikannya melalui kombinasi beberapa saran di atas dan beberapa bagian saya untuk distro Debian saya.

Saya membuat symlink ke .Xauthorityfile untuk root dan semua pengguna lain. Masalah terselesaikan untuk pengguna root, karena root memiliki izin akses ke file itu, tetapi tidak untuk pengguna lain. Saya menambahkan izin baca-saja untuk semua pengguna lain untuk file .Xauthority.

#do this for all other users who do not have .Xauthority file    
ln -s /home/userwithxauth/.Xauthority .Xauthority

#run the following command to give read only access permission to .Xauthority file
chmod 644 /home/userwithxauth/.Xauthority
McNulty
sumber