Saya memiliki pertanyaan yang sama seperti Anda tetapi untuk pengguna normal. Katakanlah saya ingin memulai firefox menggunakan foo akun pengguna. Saya masuk sebagai bilah:
[bar@localhost ~]$ sudo -u foo -H firefox
Sayangnya perintah itu gagal dengan kesalahan yang sama seperti dalam pertanyaan (yaitu tidak ada protokol yang ditentukan & tidak dapat membuka tampilan)
Solusi saya adalah dengan hanya menambahkan foo pengguna ke daftar akses resmi ke server X.
xhost si:localuser:foo
Dan hanya itu, saya kemudian dapat meluncurkan Firefox (dan aplikasi X lainnya) menggunakan sudo
dan foo pengguna.
Latar Belakang : Di X Window, ada arsitektur klien / server. Ketika Anda meluncurkan aplikasi, Anda meminta otorisasi X server untuk menampilkannya. Secara default setelah Anda membuka sesi (Anda login secara grafis), Anda (pengguna Anda) jelas diizinkan untuk berkomunikasi dengan server dan menampilkan aplikasi. Pengguna lain tidak memiliki izin ini kecuali Anda menentukannya. xhost
adalah alat untuk memanipulasi daftar izin. Yang si
menunjukkan bahwa aturannya adalah sisi server dan memberi otorisasi pengguna lokal foo
untuk menampilkan aplikasi. X Window sangat kuat dalam hal ini dan Anda dapat menampilkan aplikasi jarak jauh secara lokal dengan bermain dengan DISPLAY
variabel lingkungan dan xhost
(tetapi tidak terbatas pada mereka). Di masa lalu, saat orang mengetikxhost +
dan secara implisit memungkinkan semua orang untuk menggunakan sesi X mereka, adalah mungkin untuk menampilkan aplikasi pada layar mereka untuk lelucon ;-) tidak begitu banyak saat ini karena orang semakin kurang menggunakan arsitektur klien / server X Window (setidaknya untuk apa yang saya amati di 10 tahun terakhir).
PS: Saya melakukan ini untuk meluncurkan Firefox dalam semacam "penjara" (untuk menghindari kerentanan seperti untuk pdf.js di masa depan). Tetapi saya segera mengetahui bahwa memanggil Firefox melalui sudo tidak akan memungkinkannya untuk mengakses audio atau perangkat keras video. Tetapi ada satu orang yang menjelaskan dengan jelas bagaimana cara mengaktifkan akselerasi perangkat keras video dan audio saat memanggil Firefox melalui sudo . YMMV dengan instruksi ini, misalnya saya masih memiliki izin yang ditolak dengan audio tetapi video baik-baik saja (diuji pada Fedora 22 dengan SELinux ON).