Katakanlah saya punya 2 akun pengguna user1
dan user2
. Ketika saya login sebagai user1
, dan kemudian beralih user2
menggunakan su
, saya bisa menjalankan program command-line, tetapi program GUI gagal.
Contoh:
user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display:
Jadi bagaimana saya bisa menjalankan aplikasi GUI?
$XAUTHORITY
masih diatur ke user1's~/.Xauthority
, yang programnya, saya kira, akan mencoba membaca, dan gagal karena file itu biasanya memiliki mode 0600 (-rw-------
), yang berarti tidak tersedia untuk dibaca oleh siapa pun di grup "lain", yang mencakup pengguna2. Artinya jika Andachmod o+r ~/.Xauthority
(sebagai pengguna1), Anda akan meretas masalah ini. Saya menulis naskah yang menunjukkan ini.Jawaban:
su vs su -
Saat menjadi pengguna lain yang biasanya ingin Anda gunakan
su - user2
. Tanda hubung akan memaksa user2.bash_profile
untuk mendapatkan sumber.xhost
Selain itu, Anda harus memberi pengguna akses ke layar Anda. Ini diatur oleh X. Anda dapat menggunakan perintah
xhost +
untuk mengizinkan izin pengguna lain untuk menampilkan GUI ke desktop pengguna1.CATATAN: Saat menjalankan,
xhost +
Anda ingin menjalankan ini saat masih dalam shell milik pengguna1.$ DISPLAY
Ketika Anda menjadi user2 Anda mungkin perlu mengatur variabel lingkungan
$DISPLAY
.sumber
xhost +user2
masih memberi saya kesalahan ini -xhost: bad hostname "user2"
. Saya googled beberapa, dan sepertinya saya perlu melakukanxhost +user2@laptop
atauxhost +user2@localhost
, tidak yakin yang mana. Lalu katanyaxhost +user2@localhost being added to access control list
.xhost
, dan menentukanexport DISPLAY=:0.0
, menjalankanleafpad
masih memberi sayaNo protocol specified leafpad: Cannot open display:
, dan gagal dijalankan. Saya menemukan tautan ini di linuxquestions.org/questions/linux-newbie-8/… , yang mengatakan bahwa ada beberapa cookie ajaib danxauth
. Sudahkah Anda menguji hal-hal itu berfungsi pada komputer Anda? Mungkin ada yang berbeda dengan konfigurasi saya? Saya menggunakan Debian + LXDE.xhost +
bekerja, dan tidak ada hal lain yang diperlukan (tidak perlu diatur$DISPLAY
). Bisakah Anda memperbarui jawaban Anda, dan saya akan menerimanya?xhost
memberikan daftar dalam formatSI:localuser:USERNAME
, jadixhost SI:localuser:user2
seharusnya berfungsi. Oh dan tampilan pengguna dapat ditemukan menggunakanw
.xhost +
akan memungkinkan pengguna di host mana pun yang dapat terhubung ke x-server Anda untuk mengakses layar Anda.xhost +SI:localuser:user2
bekerja untuk saya di Debian.Anda perlu membagikan token otentikasi dari pengguna1 (dengan anggapan
~
rumah pengguna1 ):sumber
tee -a
untuk menghindari segala informasi yang ada.Xauthority
.Anda dapat menggunakan penerusan X11:
sumber
Anda dapat memulai aplikasi dari pengguna lain. Saya akan memulai aplikasi gimp dari user2, ketika sedang login (GUI) dengan pengguna 1:
(masukkan pass)
Nikmati :)
sumber
export DISPLAY
terlebih dahulu, seperti jawaban yang diterima mengatakan)$ xhost -
Anda dapat mencoba perintah sux:
sux akan menangani barang $ DISPLAY untuk Anda. Anda mungkin perlu menginstalnya dengan:
di bawah Debian / Ubuntu.
sumber
sux
tidak lagi dikirim oleh Debian atau Ubuntu. Alternatif terbaik yang bisa saya temukan adalah menambahkanxhost SI:localuser:root
(atau pengguna apa pun)~/.xprofile
untuk mengizinkannya secara permanen atau menggunakanrunuser
gksu
/gksudo
alternatif yang berfungsi dengan baik. Saat masih di Sid, itu dihapus di Buster untuk masalah keamanan.Sebagai alternatif untuk
sux
, dengan aman menjalankan perintah grafis (firefox-esr
dalam contoh di bawah) seperti$AUTHUSER
(guest
dalam contoh di bawah):kode tidak:
guest
pengguna akses ke pengguna Anda saat ini$DISPLAY
melaluixhost +SI:localuser:guest
ssh-askpass
untuk meminta kata sandi Anda secara grafis (tentu saja, Anda dapat menggunakansudoers(5)
NOPASSWD:
untuk menghindari ini, jika kebijakan keamanan Anda menganggapnya ok. Atau Anda dapat menggunakanaskpass
program lain , atau menentukannya dalam file konfigurasi (lihatsudo(8)
detailnya di--askpass
)sudoers(5)
), ia menjalankan perintah/usr/bin/firefox-esr
sebagai pengguna lain (guest
)guest
) untuk mengakses Anda$DISPLAY
dicabut melaluixhost -SI:localuser:guest
akhirnya,
sudo -K
menghapus kata sandi yang di-cache, jadi doa berikutnyassh-askpass
akan meminta Anda kata sandi lagi (alih-alih menggunakan kata sandi yang di-cache)sementara itu sedikit lebih banyak pekerjaan daripada apa
gksu(8)
atau apa yangsux(8)
dilakukan, itu bisa dituliskan, dan itu jauh lebih aman daripada:xhost +
(setiap pengguna akan memiliki akses ke tampilan grafis Anda selama masih berlaku)gksu
/ yangsux
dilakukan (salinan sementara~/.Xauthority
, yang memungkinkan pengguna tertentu untuk menyalin AndaMIT-MAGIC-COOKIE-1
dan terus menggunakan layar Anda bahkan setelah gksu / sux selesai (selama Anda tidak mematikan mesin atau keluar dari layar - screensaver, hibernasi dll. tidak mengubah keajaiban) Kue kering).karena hanya akan memungkinkan satu pengguna lokal mengakses layar Anda, dan kemudian hanya selama perintah berjalan (ketika perintah selesai,
$AUTHUSER
tidak akan lagi dapat mengakses layar Anda dengan cara apa pun).Alternatif yang aman lainnya adalah
ssh -X
(tanpa-Y
yang sebenarnya membuat Anda kurang aman! LihatForwardX11Trusted
dissh_config(5)
untuk rincian), seperti lebih mudah digunakan jika Anda tidak scripting, tapi itu menginduksi biaya overhead additinal (misalnya. Itu lebih lambat) dan beberapa program mungkin tidak bekerja dengan benar tanpa tidak aman-Y
.sumber
Anda perlu memuat instalasi UI sebagai user2 .
Coba ikuti ini:
Masuk sebagai root :
Uji x server:
Jika Anda dapat melihat jam berjalan, itu bagus, sekarang coba jalankan ini:
Hasilnya harus seperti ini:
Sekarang, biarkan user2 mengakses xhost
sekarang coba masuk lagi ke user2 dan coba buka salah satu program GUI.
sumber
sudo su
. Gunakansudo
atausu
; Pilih salah satu. (3) Pertanyaannya ditulis dalam bentukuser1
danuser2
. Silakan tulis jawaban Anda dalam haluser1
danuser2
. (Apakah atau tidak; tidak adatri
.) (4) Jawaban Anda akan lebih baik jika itu termasuk penjelasanSI:localuser
. ... ... ... ... ... ... ... Tolong jangan menanggapi dalam komentar; edit jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.