it-swarm-id.com

cara menggunakan xauth untuk menjalankan aplikasi grafis melalui pengguna lain di linux

Akun pengguna reguler saya adalah, katakanlah, user1. Saya membuat user2 terpisah untuk beberapa aplikasi x yang ingin saya jalankan ketika sedang login ke x sebagai user1 tetapi dengan cara yang akan mencegahnya dari akses baca/tulis ke data user1. Saya pikir saya bisa menggunakan xauth dan Sudo/su untuk user2 dari user1 untuk menjalankan aplikasi ini. Bagaimana saya melakukan ini? Saya tidak yakin cara mengkonfigurasi xauth.

48
Phil

Saya menemukan sesuatu yang sangat bagus untuk saya di KDE

kdesu -u username /path/to/program
2
Phil

Untuk menggunakan xauth selektif, sebagai user1 jalankan:

xauth list|grep `uname -n`

Ini mencetak entri otorisasi hexkey untuk Anda. Anda dapat memiliki tampilan berbeda yang terkait dengan host tersebut juga.

Saat user2 mengatur tampilan Anda (dengan asumsi case default):

DISPLAY=:0; export DISPLAY

Lalu lari:

xauth add $DISPLAY . hexkey

Catat titik setelah $ DISPLAY dan sebelum hexkey.

Ketika akses tidak lagi diperlukan, karena user2 Anda dapat menjalankan:

xauth remove $DISPLAY
33
Randall

Saya memasukkan .zshrc sebuah baris dengan export XAUTHORITY=~/.Xauthority dan sekarang saya dapat menjalankan Sudo -E xcommand. Setelah banyak googling, bagi saya ini adalah cara termudah.

12
kfl62

Pertama: Jangan gunakan xhost +, ini agak tidak aman (blank allow/deny).

Alih-alih menggunakan mekanisme X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Atau, jika Anda telah menginstal sux, gunakan itu (lihat jawaban ehempel).

Dalam kedua kasus, user2 akan menggunakan cookie rahasia di .Xauthority untuk mengotorisasi ke server X, dan tidak ada orang lain yang akan memiliki akses ke sana.

Catatan:

  • Bergantung pada izin file Anda, Anda mungkin harus menyalin .Xauthority dengan cara lain.
  • Alih-alih menyalin .Xauthority, Anda juga dapat menggunakan xauth untuk mengekstrak dan menyalin kunci otorisasi (lihat jawaban Randall). Jika Anda memiliki beberapa kunci di .Xauthority file ini lebih selektif; kalau tidak, ini adalah masalah selera.
9
sleske

Dengan asumsi debian atau ubuntu (harus serupa pada Red Hat/SUSE).

Sudo apt-get install sux
sux user -c 'command'
9
ehempel

Ini akan memperbaiki masalah untuk semua pengguna:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
7
JMS

Sebagai root:

xhost local:yourusername

Di mana nama pengguna Anda adalah nama pengguna Anda :)

Maka lakukan su sebagai pengguna Anda xclock akan berfungsi jika sudah diinstal

4
ACV

Ini hanya retasan:

  • xauth + (tidak aman)
  • ssh -X user2 @ localhost (jelek)

sleske di atas, saya pikir, solusi yang tepat.

2
alex

Cara ini dibuat di suse/opensuse: http://www.novell.com/support/kb/doc.php?id=700374

Cukup modifikasi /etc/pam.d/su, tambahkan opsi (cetak tebal):

session opsional pam_xauth.so systemuser = 1

Maka Anda dapat beralih dengan su tanpa -:

su user2

dan jalankan aplikasi secara grafis.

0
pojem