Perché ricevo questo messaggio da xauth: "timeout nel file di autorità di blocco / home / <utente> /.Xauthority"?


32

Durante il tentativo di SSH in un host ho ricevuto il seguente messaggio da xauth:

/ usr / bin / xauth: timeout nel file dell'autorità di blocco /home/sam/.Xauthority

NOTA: stavo provando a visualizzare in remoto una GUI X11 tramite una connessione SSH, quindi dovevo xauthessere in grado di creare un $HOME/.Xauthorityfile correttamente, ma come indicava quel messaggio, chiaramente non lo era.

Tentativi di eseguire qualsiasi app basata su X11, ad esempio xeyessono stati accolti con questo messaggio:

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

Come posso risolvere questo problema?


1
Ho trovato utile questa pagina poiché il mio problema era dovuto al fatto che selinux era in modalità di esecuzione, il che impediva in primo luogo la creazione
Gav Reichel

Risposte:


39

L'esecuzione di un stracesistema remoto in cui xauthnon funziona ti mostrerà cosa sta per inciampare xauth.

Per esempio

$ 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

Quindi xauthsta tentando di aprire un file ed esiste già. Il file colpevole è /home/sam/.Xauthority-c. Possiamo confermare la presenza di questo file sul sistema remoto:

$ 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

La correzione

Come risulta. Quei file sono file di blocco per .Xauthority, quindi semplicemente rimuoverli risolve il problema.

$ rm -fr .Xauthority-*

Con i file eliminati, uscire dalla connessione SSH e quindi riconnettersi. Ciò consentirà xauthdi rieseguire correttamente.

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

Ora siamo in grado di eseguire xauth liste le applicazioni X11 senza problemi.

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

La GUI

$ xeyes

                                              ss # 1

Metodo alternativo per risolvere il problema

Mi sono imbattuto in questo post intitolato: xauth: errore nel blocco del file di autorità .Xauthority [linux, ssh, X11] che menziona l'uso di xauth -brompere qualsiasi file di blocco che potrebbe essere in giro. xauthLa pagina man sembra confermarla:

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

Riferimenti


1
Sai che cosa ha lasciato indietro quei file di blocco?
Gilles 'SO- smetti di essere malvagio' il

@Gilles - no, ho avuto lo stesso pensiero. Li ho cancellati e poi ho pensato che avrei dovuto cercare di approfondire ciò che li stava controllando usando lsof. Li avevo già visti ma non ricordo dove. Pensavo che tu e io ne avessimo discusso in precedenza, ma non siamo riusciti a trovarne alcuna menzione sul sito.
slm

1
Potrebbe essere necessario risolvere i problemi di SELinux prima di eliminare i file di autorità. Vedi froebe.net/blog/2015/01/20/…
MrMas

Nel mio caso il file e la directory avevano il proprietario errato (dopo aver copiato la home directory dell'utente su un altro computer).
Ken Sharp,

Nel mio caso le autorizzazioni per la / home / utente cartella erano root:rootinvece user:user. Risolto da chown user:user /home/user.
0andriy,

8

La radice del problema potrebbe essere che non si dispone dell'autorizzazione di scrittura nella directory $ HOME.

Ecco perché ho ricevuto questo messaggio:

/ usr / bin / xauth: timeout nel file dell'autorità di blocco /home/fooftp/.Xauthority

Ecco come ho controllato l'autorizzazione:

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.

Se questo è il problema, allora devi essere sicuro di avere i permessi di scrittura su $ HOME:

chmod u+rwX $HOME

3

Ho un'altra risposta alla domanda che mi ha afflitto prima di capire il problema. Il problema è un bug nel sistema operativo Fedora ed è derivato, come ho capito in seguito. Se il problema non è come indicato dalla risposta accettata e / o non sei su Fedora, RedHat, Korora, ecc., Questo non ti aiuterà.

Il problema

Come ha detto l'utente slm, l'esecuzione di strace ti darà un'indicazione del problema, ma nel caso di questo particolare bug, l'output è diverso:

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

Per essere chiari, questo sta affermando che il codice di ritorno EACCES, che è stato negato l'autorizzazione. Questo è diverso dal problema dell'utente slm, in cui aveva il codice di ritorno EEXIST, il che significa che esiste un file. Quindi, per il codice di ritorno EACCES, ovviamente la prima cosa che controlli è: i miei permessi di casa sono impostati in modo da poter scrivere nella mia directory di casa? Dovresti prima verificare di avere il flag di scrittura nella tua home directory per il tuo utente. In tal caso, potresti essere vittima del bug descritto di seguito.

Il bug

Attraverso un paio di ricerche su Google sono stato finalmente in grado di trovare qualcuno con un problema simile, e questo mi ha portato alla segnalazione di bug di Fedora. Per quelli di voi che vogliono leggerlo: https://bugzilla.redhat.com/show_bug.cgi?id=772992

La soluzione alternativa

La soluzione alternativa al problema:

#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

Quando rientri in SSH, dovrebbe andare bene a questo punto e dovresti essere in grado di trasferire nuovamente la tua X-session.


EDIT (e altre soluzioni alternative):

Per essere il più completo possibile, altri utenti hanno dichiarato nella segnalazione di bug che la correzione sopra non ha funzionato per loro - è successo per me. Un altro tentativo di aggirare il problema è stato (non ho verificato personalmente questa soluzione alternativa):

# setsebool -P use_nfs_home_dirs 1

Un'altra persona menziona qualcosa su GDM, di cui non ho conoscenza. Se questo è per te, ti consiglio di leggere il suo post su BugZilla e di vedere se il suo commento significa qualcosa per te.


1
Per tutta la sua lunghezza, questo non è chiaro. Qual è il problema? Qual è la soluzione / soluzione alternativa? Che cosa fa? Quando dovremmo aspettarci che la soluzione n. 1 non funzioni?
Scott,

Non capisco cosa stai chiedendo. La domanda aveva un problema abbastanza chiaro. La soluzione 1 aveva una soluzione abbastanza chiara per una variazione di quel problema. La soluzione 1 aveva un modo abbastanza chiaro di indicare quale fosse il problema specifico nella sua risposta. Il mio problema era chiaramente diverso, come indicato sopra, motivo per cui anche la mia soluzione alla risoluzione di quel problema era chiaramente diversa. Di cosa hai bisogno di chiarimenti per rendere questo più ovvio, suppongo sia la mia domanda per te?
searchengine27,

Ho provato a fare alcuni aggiornamenti alla risposta, ma sinceramente non so come renderlo più chiaro di quello senza sapere cosa ti disturba in modo specifico.
searchengine27,

1
Confermato e risolto il problema per CentOS 6.9
kap

0

La configurazione di SELinux è la prima cosa da verificare, con ...

*/usr/sbin/sestatus*

o

*/usr/sbin/sestatus -v*

Se la configurazione di SELinux è impostata su "Enforcing" potrebbe causare il problema "xauth" .

 /usr/sbin/setenforce 0

Puoi impostarlo provvisoriamente in modalità "permisiva" come segue, (per poter escludere questo problema come causa principale del problema) .

Quindi segui un tutorial SELinux per mettere in atto una configurazione corretta, o disabilitala se preferisci un altro metodo di sicurezza, (es. Modificando il file di configurazione / etc / selinux / config in RHEL v.6)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.