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:~$
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/xsudo
dan tandai yang dapat dieksekusi (chmod +x /usr/local/bin/xsudo
).Kemudian jalankan:
Alternatif Potensial:
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)xhost +local:
atau serupa, yang akan membuatgksudo -u hawat firefox
kerja 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.sumber
Setelah menghabiskan terlalu banyak waktu untuk hal ini, saya menemukan bahwa dengan Gnome di Ubuntu 16.04, nilai yang benar adalah
DISPLAY=:1
, tidakDISPLAY=:0
seperti yang telah ada sejak jaman dahulu.sumber
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
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.
sumber
visudo
wrapper, yang menyediakan beberapa pemeriksaan kewarasan sebelum menulis file sudoers baru.