Sebagai alternatif untuk sux, dengan aman menjalankan perintah grafis ( firefox-esrdalam contoh di bawah) seperti $AUTHUSER( guestdalam 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
guestpengguna akses ke pengguna Anda saat ini $DISPLAYmelaluixhost +SI:localuser:guest
- gunakan
ssh-askpassuntuk 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 askpassprogram 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-esrsebagai pengguna lain ( guest)
- setelah program selesai, izin untuk pengguna lain (
guest) untuk mengakses Anda $DISPLAYdicabut melaluixhost -SI:localuser:guest
akhirnya, sudo -Kmenghapus kata sandi yang di-cache, jadi doa berikutnya ssh-askpassakan 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 suxdilakukan (salinan sementara ~/.Xauthority, yang memungkinkan pengguna tertentu untuk menyalin Anda MIT-MAGIC-COOKIE-1dan 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, $AUTHUSERtidak akan lagi dapat mengakses layar Anda dengan cara apa pun).
Alternatif yang aman lainnya adalah ssh -X(tanpa -Yyang sebenarnya membuat Anda kurang aman! Lihat ForwardX11Trusteddi 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 .
$XAUTHORITYmasih 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.