Mengapa saya mendapatkan pesan ini dari xauth: “batas waktu dalam mengunci file otoritas / home / <user> /.Xauthority”?

32

Saat mencoba SSH menjadi tuan rumah, saya menerima pesan berikut dari xauth :

/ usr / bin / xauth: batas waktu dalam mengunci file otoritas /home/sam/.Xauthority

CATATAN: Saya mencoba untuk menampilkan jauh GUI X11 melalui koneksi SSH jadi saya perluxauth harus dapat membuat $HOME/.Xauthorityfile dengan sukses, tetapi karena pesan itu menunjukkan, itu jelas tidak.

Upaya untuk menjalankan aplikasi berbasis X11, seperti xeyesdisambut dengan pesan ini:

$ xeyes
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0

Bagaimana saya bisa mengatasi masalah ini?

slm
sumber
1
Saya menemukan halaman ini bermanfaat karena masalah saya adalah karena selinux berada dalam mode menegakkan, yang mencegah file dibuat di tempat pertama: twiki.cern.ch/twiki/bin/view/CLIC/LCDTroubleShooting
Gav Reichel

Jawaban:

39

Menjalankan stracesistem remote di mana xauthgagal akan menunjukkan kepada Anda apa yang tersandung xauth.

Sebagai contoh

$ strace xauth list
stat("/home/sam/.Xauthority-c", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, 0x7fff6c4430e0)       = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, 0x7fff6c4430e0)       = 0
open("/home/sam/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0

Jadi xauthsedang mencoba untuk membuka file dan sudah ada. File pelakunya adalah /home/sam/.Xauthority-c. Kami dapat mengonfirmasi keberadaan file ini di sistem jarak jauh:

$ ls -l .Xauthority*
-rw------- 1 sam sam 55 Jul 12 22:04 .Xauthority
-rw------- 1 sam sam  0 Jul 12 22:36 .Xauthority-c
-rw------- 1 sam sam  0 Jul 12 22:36 .Xauthority-l

Cara mengatasinya

Ternyata. File-file itu adalah file kunci .Xauthority, jadi menghapusnya saja bisa menyelesaikan masalah.

$ rm -fr .Xauthority-*

Dengan file dihapus, keluar dari koneksi SSH dan kemudian hubungkan kembali. Ini akan memungkinkan xauthuntuk menjalankan kembali dengan sukses.

$ ssh -t skinner ssh sam@blackbird
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Sun Jul 12 22:37:54 2015 from skinner.bubba.net
$

Sekarang kami dapat menjalankan xauth listdan aplikasi X11 tanpa masalah.

$ xauth list
blackbird/unix:10  MIT-MAGIC-COOKIE-1  cf01f793d2a5ece0ea58196ab5a7977a

GUI

$ xeyes

                                              ss # 1

Metode alternatif untuk menyelesaikan masalah

Saya menemukan posting ini berjudul: xauth: kesalahan dalam mengunci file otoritas. Xauthority [linux, ssh, X11] yang menyebutkan penggunaan xauth -buntuk memecah file kunci yang mungkin berkeliaran. xauthHalaman manual tampaknya mendukung hal ini:

 -b      This option indicates that xauth should attempt to break any
         authority file locks before proceeding.  Use this option only to
         clean up stale locks.

Referensi

slm
sumber
1
Apakah Anda tahu apa yang menyebabkan file kunci itu tertinggal?
Gilles 'SO- berhenti bersikap jahat'
@Gilles - tidak, saya memiliki pikiran yang sama. Saya menghapusnya dan kemudian berpikir, saya seharusnya mencoba menyelidiki apa yang mengendalikan mereka menggunakan lsof. Saya pernah melihat mereka sebelumnya tetapi tidak ingat di mana. Saya pikir Anda dan saya membahasnya pada satu titik sebelumnya, tetapi tidak dapat menemukan penyebutan mereka di situs.
slm
1
Anda mungkin perlu memperbaiki masalah SELinux sebelum menghapus file otoritas. Lihat froebe.net/blog/2015/01/20/…
MrMas
Dalam kasus saya, file dan direktori memiliki pemilik yang salah (setelah menyalin direktori home pengguna ke komputer lain).
Ken Sharp
Dalam kasus saya, izin ke folder / home / userroot:root bukan user:user. Diperbaiki oleh chown user:user /home/user.
0andriy
8

Akar masalahnya bisa jadi Anda tidak memiliki izin menulis di direktori $ HOME.

Itu sebabnya saya mendapat pesan ini:

/ usr / bin / xauth: batas waktu dalam mengunci file otoritas /home/fooftp/.Xauthority

Inilah cara saya memeriksa izin:

fooftp@for-fun-work:~> ls -l .Xauthority 
-rw-r--r-- 1 fooftp fooftp 1 Sep 14  2015 .Xauthority
# Conlusion: I can write this file: ok

fooftp@for-fun-work:~> rm .Xauthority
rm: cannot remove '.Xauthority': Permission denied
# Conlusion: strange ... I can't delete it 

fooftp@for-fun-work:~> id
uid=1001(fooftp) gid=1000(fooftp) groups=1000(fooftp)
# Conlusion: Yes, I am user fooftp

fooftp@for-fun-work:~> ls -ld .
dr-xr-xr-x 14 fooftp fooftp 4096 Sep 14  2015 .
# Conlusion: Bug found :-)
# The permissions should be "rwx" for you.

Jika ini masalahnya, maka Anda harus yakin bahwa Anda memiliki izin menulis ke $ HOME:

chmod u+rwX $HOME
guettli
sumber
3

Saya punya jawaban lain untuk pertanyaan yang mengganggu saya sebelum saya mencari tahu masalahnya. Masalahnya adalah bug di Fedora OS dan itu turunannya, seperti yang saya kemudian temukan. Jika masalah tidak seperti yang ditunjukkan oleh jawaban yang diterima, dan / atau Anda tidak berada di Fedora, RedHat, Korora, dll, maka ini tidak akan membantu Anda.

Masalah

Seperti kata pengguna slm, menjalankan strace akan memberi Anda indikasi masalah, tetapi dalam kasus bug ini, hasilnya berbeda:

$ strace xauth list
  ...
  stat64("/home/USER/.Xauthority-c", 0xbff23280) = -1 ENOENT (No such file or directory)
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
  rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
  rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
  nanosleep({2, 0}, 0xbff232c8)           = 0
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
  rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
  rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
  nanosleep({2, 0}, 0xbff232c8)           = 0
  open("/home/USER/.Xauthority-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied) 
  ...

Untuk menjadi jelas, ini menyatakan bahwa kode pengembalian EACCES, yang merupakan izin ditolak. Ini berbeda dari masalah pengguna slm, di mana ia memiliki kode pengembalian EEXIST, yang berarti File ada. Jadi, untuk kode pengembalian EACCES, jelas hal pertama yang Anda periksa adalah: apakah izin rumah saya sudah diatur sehingga saya bisa menulis ke direktori rumah saya? Anda harus memverifikasi bahwa Anda memiliki bendera tulis pada direktori home Anda untuk pengguna Anda sendiri terlebih dahulu. Jika Anda melakukannya, maka Anda mungkin menjadi korban bug yang dijelaskan di bawah ini.

Serangga

Melalui beberapa pencarian google saya akhirnya dapat menemukan seseorang dengan masalah yang sama, dan itu membawa saya ke laporan bug Fedora. Bagi Anda yang peduli untuk membacanya: https://bugzilla.redhat.com/show_bug.cgi?id=772992

Penanganannya

Solusi untuk masalah ini:

#verify you're not crazy
$ xauth list
  /usr/bin/xauth:  timeout in locking authority file /home/USER/.Xauthority
#use restorecon to reset it all
$ /sbin/restorecon -v -v /home/USER/.Xauthority 
$ /sbin/restorecon -v -v -R /home/USER/
#log out of the remote system
$ exit

Ketika Anda SSH kembali, itu akan baik-baik saja pada saat ini dan Anda harus dapat berhasil mentransfer sesi X Anda lagi.


EDIT (dan solusi alternatif lainnya):

Agar selengkap mungkin, pengguna lain menyatakan dalam laporan bug bahwa perbaikan di atas tidak bekerja untuk mereka - itu ternyata bekerja untuk saya. Upaya lain untuk mengatasi masalah adalah (Saya tidak memverifikasi solusi ini secara pribadi):

# setsebool -P use_nfs_home_dirs 1

Orang lain menyebutkan sesuatu tentang GDM, yang tidak saya ketahui. Jika itu berkaitan dengan Anda, saya sarankan membaca postingnya di BugZilla dan melihat apakah komentarnya berarti bagi Anda.

searchengine27
sumber
1
Untuk semua panjangnya, ini tidak jelas. Apa masalahnya? Apa solusinya? Apa fungsinya? Kapan kita seharusnya mengharapkan solusi # 1 tidak bekerja?
Scott
Saya tidak mengerti apa yang Anda minta. Pertanyaan itu memiliki masalah yang cukup jelas. Solusi 1 memiliki solusi yang cukup jelas untuk variasi masalah itu. Solusi 1 memiliki cara yang cukup jelas untuk menunjukkan apa masalahnya secara spesifik dalam jawabannya. Masalah saya jelas berbeda, seperti yang ditunjukkan di atas, itulah sebabnya solusi saya untuk menyelesaikan masalah itu juga jelas berbeda. Apa yang Anda perlu klarifikasi yang akan membuat ini lebih jelas saya kira adalah pertanyaan saya kepada Anda?
searchengine27
Saya mencoba untuk membuat beberapa pembaruan untuk jawabannya, tapi jujur ​​saya tidak tahu bagaimana membuatnya lebih jelas dari itu tanpa mengetahui apa yang secara khusus mengganggu Anda tentang hal itu.
searchengine27
1
Dikonfirmasi dan solusi menyelesaikan masalah untuk CentOS 6.9
kap
0

Konfigurasi SELinux adalah hal pertama yang harus dilihat, dengan ...

*/usr/sbin/sestatus*

atau

*/usr/sbin/sestatus -v*

Jika konfigurasi SELinux diatur ke "Menegakkan" itu mungkin menyebabkan masalah "xauth" .

 /usr/sbin/setenforce 0

Anda dapat mengaturnya untuk sementara mode "permisive" sebagai berikut, (untuk dapat mengecualikan masalah ini sebagai akar penyebab masalah) .

Kemudian ikuti tutorial SELinux untuk membuat konfigurasi yang tepat, atau nonaktifkan jika Anda lebih suka metode keamanan lain, (f.ex.by mengedit file konfigurasi / etc / selinux / config di RHEL v.6)

fjcobas
sumber