Neden bu mesajı xauth'dan alıyorum: “/ home / <user> /.Xauthority kilitleme yetki dosyasında zaman aşımı”?


32

SSH'yi bir ana bilgisayara girmeye çalışırken aşağıdaki mesajı aldım xauth:

/ usr / bin / xauth: /home/sam/.Xauthority kilitleme yetkisi dosyasında zaman aşımı

NOT: Bir SS11 bağlantısı üzerinden bir X11 GUI'yi uzaktan göstermeye çalışıyordum, bu yüzden başarılı xauthbir şekilde $HOME/.Xauthoritydosya oluşturabilmeliydim , ama bu mesajın belirttiği gibi açıkça değildi.

xeyesBu iletiyle karşılananlar gibi X11 tabanlı uygulamaları çalıştırma girişimleri :

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

Bu sorunu nasıl çözebilirim?


Yanıtlar:


39

straceUzaktaki bir sistemin xautharızalı olduğu bir yerde çalıştırılması size neyin açıldığını gösterir xauth.

Örneğin

$ 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

Yani xauthbir dosyayı açmaya çalışıyor ve zaten var. Suçlu dosyası /home/sam/.Xauthority-c. Bu dosyanın uzak sistemdeki varlığını onaylayabiliriz:

$ 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

Çözüm

Anlaşıldığı üzere. Bu dosyalar kilitli dosyalar içindir .Xauthority, bu yüzden onları kaldırmanız sorunu çözer.

$ rm -fr .Xauthority-*

Dosyalar silinirken, SSH bağlantısından çıkın ve tekrar bağlanın. Bu xauthbaşarıyla yeniden çalıştırılmasına izin verecektir .

$ 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
$

Artık xauth listX11 uygulamalarını sorunsuzca çalıştırabiliyoruz .

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

GUI

$ xeyes

                                              ss 1.

Sorunu çözmek için alternatif bir yöntem

: Bu başlıklı yazı geldi kilitleme hata yetki dosyası .Xauthority [linux, ssh, X11]: xauth kullanımından söz hangi xauth -btakılmak olabilecek kilit dosyaları kırmak için. xauth'nin adam sayfası bu durumu destekliyor:

 -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.

Referanslar


1
Bu kilit dosyalarının geride kalmasına neyin neden olduğunu biliyor musunuz?
Gilles 'SO- kötülük yapmayı bırak'

@Gilles - hayır Aynı düşünceye sahiptim. Onları sildim ve düşündüm de, onları neyin kontrol ettiğini kontrol etmeye çalışmalıydım lsof. Onları daha önce görmüştüm ama nerede olduğunu hatırlayamıyorum. Sizinle bir noktada daha önce tartıştık sandık ama onlardan bahsetmedik.
slm

1
Yetki dosyalarını silmeden önce SELinux sorunlarını çözmeniz gerekebilir. Bkz. Froebe.net/blog/2015/01/20/…
MrMas 1'16

Benim durumumda dosya ve klasör yanlış bir sahibine sahipti (kullanıcının giriş dizinini başka bir bilgisayara kopyaladıktan sonra).
Ken Sharp,

Benim durumumda / home / user klasörünün izinleri root:rootyerine idi user:user. Tarafından düzeltildi chown user:user /home/user.
0ve 28

8

Sorunun kökü $ HOME dizininde yazma izniniz olmaması olabilir.

Bu yüzden bu mesajı aldım:

/ usr / bin / xauth: kilitleme yetkisi dosyasındaki zaman aşımı /home/fooftp/.Xauthority

İzni nasıl kontrol ettiğim:

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.

Sorun buysa, $ HOME için yazma izninizin olduğundan emin olmanız gerekir:

chmod u+rwX $HOME

3

Sorunu çözmeden önce beni rahatsız eden soruya başka bir cevabım var. Sorun Fedora OS'taki bir hata ve daha sonra anladığım gibi türevleri. Eğer sorun kabul edilen cevapla belirtilmemişse ve / veya Fedora, RedHat, Korora, vb. Değilseniz, o zaman bu size yardımcı olmaz.

Sorun

Kullanıcı slm dediği gibi, strace çalışan size sorunun bir göstergesi verecektir, ancak bu özel hata durumunda, çıkış farklıdır:

$ 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) 
  ...

Açıktır ki, bu izin reddedilen EACCES dönüş kodunu belirtir. Bu, kullanıcı slm'sinin probleminden farklıdır, burada EEXIST dönüş koduna sahiptir, yani Dosya var. Öyleyse, EACCES dönüş kodu için açıkçası ilk kontrol ettiğiniz şey şudur: ev izinlerim ayarlandı, bu yüzden ev dizinime yazabiliyorum? Öncelikle kendi kullanıcı için giriş dizininizde yazan bayrak olduğunu doğrulamanız gerekir. Bunu yaparsanız, aşağıda açıklanan hatanın kurbanı olabilirsiniz.

Böcek

Birkaç google arama yoluyla, sonunda benzer problemi olan birini bulabildim ve bu beni Fedora hata raporuna götürdü. Okumak isteyenler için: https://bugzilla.redhat.com/show_bug.cgi?id=772992

Geçici Çözüm

Sorunun geçici çözümü:

#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

Tekrar SSH'niz olduğunda, bu noktada iyi olmalı ve X oturumunuzu tekrar başarılı bir şekilde aktarabilmelisiniz.


EDIT (ve diğer alternatif çözümler):

Diğer kullanıcılar, hata raporunda, yukarıdaki düzeltmenin kendileri için işe yaramadığını, benim için işe yaradığını söyledi. Bu soruna geçici bir çözüm bulmak için başka bir girişimde bulundum (bu geçici çözümü kişisel olarak doğrulamadım):

# setsebool -P use_nfs_home_dirs 1

Başka bir kişi, GDM hakkında sıfır bilgi sahibi olduğum bir şeyden bahseder. Bu sizin için önemliyse, BugZilla'daki yayınını okumanızı ve yorumunun sizin için bir anlamı olup olmadığını görmenizi öneririm.


1
Tüm uzunluğu için, bu belirsizdir. Sorun nedir? Çözüm / geçici çözüm nedir? Bu ne işe yarıyor? Çözüm 1'in çalışmamasını ne zaman beklemeliyiz?
Scott

Ne sorduğunu anlamıyorum. Sorunun oldukça net bir sorunu vardı. Çözüm 1, bu problemin bir varyasyonu için oldukça net bir çözüme sahipti. 1. Çözüm, sorunun özellikle cevabında ne olduğunu göstermenin oldukça net bir yolunu buldu. Sorunum yukarıda da belirtildiği gibi açıkça farklıydı, bu yüzden bu sorunu çözme konusundaki çözümüm de açıkça farklıydı. Bunu daha açık hale getirecek açıklığa kavuşturmak için neye ihtiyacın var sanırım sana sorum?
searchengine27

Cevabında bazı güncellemeler yapmaya çalıştım, ama dürüst olmak gerekirse, sizi bu konuda özellikle neyin rahatsız ettiğini bilmeden, bundan daha net yapmayı bilmiyorum.
searchengine27

1
Onaylandı ve geçici çözüm, CentOS 6.9 için sorunu çözdü
kap

0

SELinux konfigürasyonu, ilk kontrol edilmesi gereken şey ...

*/usr/sbin/sestatus*

veya

*/usr/sbin/sestatus -v*

SELinux'un yapılandırması ayarlanırsa "İcrası" o neden olabilecek "xauth" sorunu.

 /usr/sbin/setenforce 0

Bunu geçici olarak "izin veren" moda aşağıdaki gibi ayarlayabilirsiniz (bu sorunu sorunun temel nedeni olarak göz ardı etmek için) .

Ardından uygun bir konfigürasyon koymak için bir SELinux eğitimini izleyin veya başka bir güvenlik yöntemi tercih ederseniz devre dışı bırakın (f.ex./ / etc / selinux / config yapılandırma dosyasını RHEL v.6'da düzenleyerek )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.