Otentikasi Force XWindows

0

Saya memulai proses dengan init.d dan ingin dapat membuat aplikasi GUI sebagai proses anak.

Karena awal proses ini, variabel lingkungan DISPLAY dan XAUTHORITY tidak ditetapkan.

Saya bisa mengatur DISPLAY menjadi: 0,0, yang berfungsi dengan baik. Namun, saya mengalami lebih banyak masalah dengan variabel XAUTHORITY.

Saya hanya bisa mengatur XAUTHORITY untuk menunjuk ke file .XAuthority di direktori home pengguna - tetapi tidak ada. Sebaliknya, ketika masuk secara normal ke X-Session, variabel XAUTHORITY diatur ke beberapa file di bawah / var / run / gdm / dan memiliki nama file yang tampaknya acak.

Sebagai root, bisakah saya menghasilkan cookie baru untuk saya sendiri?


sumber
Usexauth add
ssnobody

Jawaban:

1

Anda tidak dapat membuat cookie baru: cookie adalah "kata sandi rahasia" yang diberi tahu oleh server saat itu dimulai dan yang perlu diketahui semua klien untuk dapat terhubung.

Saya pikir Anda bisa mendapatkan apa yang Anda inginkan dengan sesuatu seperti

DISPLAY=:0
XAUTHORITY=$(ps auxw | sed -ne "s|.*/[X].* $DISPLAY.*-auth \\([^ ]*\\).*|\\1|p")
export DISPLAY XAUTHORITY
...

Ini bekerja dengan mencari proses X server yang mencoba menemukan -authargumen yang diteruskan ke sana, karena itu harus berupa file yang berisi pengaturan XAUTH. Perhatikan bahwa file ini biasanya (menurut pengalaman saya) dimiliki oleh root dan pengguna lain tidak dapat membacanya, jadi jika Anda ingin menjalankan aplikasi X yang tidak dijalankan sebagai root, Anda harus menyalin ini terlebih dahulu. file (sebagai root) di tempat lain dan ubah pemilik salinan itu (atau lebih mungkin, Anda ingin mentransfer konten file ini ke file pengguna ~/.Xauthority, menggunakan xauth addatau xauth merge).

Cara lain untuk menemukan file tempat cookie ajaib disimpan adalah dengan melihat lingkungan beberapa proses pengguna yang masuk (misalnya gnome-shellproses). Misalnya dengan psAnda harus dapat menemukan id gnome-shellproses dari proses (atau beberapa proses pengguna lain yang kami harapkan berjalan sebagai klien X), dan kemudian melihat /proc/<process-id>/environmentke dalam untuk menemukan nilai envvar XAUTHORITY-nya.

Stefan
sumber