Evince gagal memulai karena tidak dapat membaca .Xauthority
10
Saya login jauh dari SSH dengan penerusan X ke mesin yang menjalankan Ubuntu 10.04 (jelas). Sebagian besar aplikasi X11 (mis. Xterm, gnome-terminal) berfungsi dengan baik. Tapi Evince tidak memulai. Tampaknya tidak dapat membaca ~/.Xauthority, meskipun file itu ada, dan jelas dapat dibaca (memiliki izin yang tepat dan aplikasi lain membacanya dengan baik).
TL, DR: ini salah Apparmor, dan karena direktori home saya berada di luar /home.
Di bawah instalasi default Ubuntu 10.04, paket apparmor ditarik sebagai dependensi tingkat Rekomendasi tidak langsung dari paket standar ubuntu . Log sistem ( /var/log/syslog) menunjukkan bahwa Apparmor menolak upaya Evince untuk membaca ~/.Xauthority:
Konfigurasi Evince default untuk Apparmor (dalam /etc/apparmor.d/usr.bin.evince) sangat permisif: ini memungkinkan membaca dan menulis sewenang-wenang di semua direktori home. Namun, direktori rumah saya di mesin ini adalah tautan simbolis ke lokasi non-standar yang tidak tercantum dalam konfigurasi AppArmor default. Akses diizinkan di bawah /home, tetapi lokasi sebenarnya dari direktori home saya adalah /elsewhere/home/gilles, jadi akses ditolak.
Aplikasi lain yang mungkin terpengaruh oleh masalah ini termasuk:
Firefox, tetapi profilnya dinonaktifkan secara default (dengan adanya tautan simbolik /etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox).
Pencetakan PDF CUPS; Saya belum menguji, tapi saya berharap gagal menulis ~/PDF.
Perbaikan saya adalah mengedit /etc/apparmor.d/tunables/home.d/localdan menambahkan baris
@{HOMEDIRS}+=/elsewhere/home/
untuk mengetahui lokasi direktori home yang tidak standar (perhatikan bahwa final /itu penting; lihat komentar di /etc/apparmor.d/tunables/home.d/ubuntu), kemudian jalankan /etc/init.d/apparmor reloaduntuk memperbarui pengaturan Apparmor.
Jika Anda tidak memiliki hak administrator dan administrator sistem tidak responsif, Anda dapat menyalin evincebiner ke lokasi yang berbeda seperti ~/bin, dan itu tidak akan dicakup oleh kebijakan Apparmor (sehingga Anda dapat memulainya, tetapi tidak akan diberikan keamanan ekstra yang sangat terbatas yang disediakan Apparmor).
Masalah ini telah dilaporkan sebagai bug Ubuntu # 447292 . Resolusi menangani case ketika beberapa pengguna memiliki direktori home mereka seperti yang tercantum di /etc/passwdluar /home, tetapi bukan case seperti milik saya yang /home/gillesmerupakan tautan simbolik.
Terima kasih. Di Ubuntu 16.04, file yang relevan adalah '/etc/apparmor.d/tunables/home.d/ubuntu' dan direkomendasikan bahwa alih-alih mengeditnya secara manual, file berjalan: 'sudo dpkg-reconfigure apparmor' (yang akan memberi Anda kesempatan untuk menambahkan lokasi rumah)
arr_sea
2
Punya masalah yang sama, dan jawaban Anda menunjuk saya ke arah yang benar. Saya menemukan solusi berbeda yang tidak memerlukan pengeditan konfigurasi apparmor. Alih-alih menggunakan symlink untuk mengarahkan kembali akses /home, gunakan bindopsi aktif mount. Saya menambahkan baris berikut ke /etc/fstab:
/elsewhere/home /home none bind
Setelah Anda melakukan ini, apparmor bahkan tidak akan tahu bahwa direktori di bawah /home"benar-benar" terletak di tempat lain, sehingga keluhannya akan hilang.
Keuntungan dari pendekatan ini adalah ia akan bekerja untuk semua aplikasi, tanpa harus mengedit file konfigurasi apparmor yang berbeda untuk masing-masing aplikasi.
Itu tidak akan berlaku dalam kasus saya: ada direktori home di bawah /homedan yang lain tidak di bawah /home. Varian untuk kasus ini adalah bind-mount /elsewhere/home/gilleske /home/gilles, atau /elsewhere/homeke /home/elsewhere.
Punya masalah yang sama, dan jawaban Anda menunjuk saya ke arah yang benar. Saya menemukan solusi berbeda yang tidak memerlukan pengeditan konfigurasi apparmor. Alih-alih menggunakan symlink untuk mengarahkan kembali akses
/home
, gunakanbind
opsi aktifmount
. Saya menambahkan baris berikut ke/etc/fstab
:Setelah Anda melakukan ini, apparmor bahkan tidak akan tahu bahwa direktori di bawah
/home
"benar-benar" terletak di tempat lain, sehingga keluhannya akan hilang.Keuntungan dari pendekatan ini adalah ia akan bekerja untuk semua aplikasi, tanpa harus mengedit file konfigurasi apparmor yang berbeda untuk masing-masing aplikasi.
sumber
/home
dan yang lain tidak di bawah/home
. Varian untuk kasus ini adalah bind-mount/elsewhere/home/gilles
ke/home/gilles
, atau/elsewhere/home
ke/home/elsewhere
.