Sebagai alternatif untuk sux
, dengan aman menjalankan perintah grafis ( firefox-esr
dalam contoh di bawah) seperti $AUTHUSER
( guest
dalam contoh di bawah):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
kode tidak:
- memberikan
guest
pengguna akses ke pengguna Anda saat ini $DISPLAY
melaluixhost +SI:localuser:guest
- gunakan
ssh-askpass
untuk meminta kata sandi Anda secara grafis (tentu saja, Anda dapat menggunakan sudoers(5)
NOPASSWD:
untuk menghindari ini, jika kebijakan keamanan Anda menganggapnya ok. Atau Anda dapat menggunakan askpass
program lain , atau menentukannya dalam file konfigurasi (lihat sudo(8)
detailnya di --askpass
)
- jika kata sandinya ok (dan Anda memiliki izin
sudoers(5)
), ia menjalankan perintah /usr/bin/firefox-esr
sebagai pengguna lain ( guest
)
- setelah program selesai, izin untuk pengguna lain (
guest
) untuk mengakses Anda $DISPLAY
dicabut melaluixhost -SI:localuser:guest
akhirnya, sudo -K
menghapus kata sandi yang di-cache, jadi doa berikutnya ssh-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 yang sux(8)
dilakukan, itu bisa dituliskan, dan itu jauh lebih aman daripada:
xhost +
(setiap pengguna akan memiliki akses ke tampilan grafis Anda selama masih berlaku)
- dapat dibaca ~ / .xauth oleh pengguna lain (akses tidak terbatas oleh pengguna ke layar Anda)
- apa
gksu
/ yang sux
dilakukan (salinan sementara ~/.Xauthority
, yang memungkinkan pengguna tertentu untuk menyalin Anda MIT-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! Lihat ForwardX11Trusted
di ssh_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
.
$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.