Warum erhalte ich von xauth die Meldung: "Timeout in der Sperrberechtigungsdatei /home/<user>/.Xauthority"?

32

Beim Versuch, eine SSH-Verbindung zu einem Host herzustellen, erhielt ich die folgende Nachricht von xauth:

/ usr / bin / xauth: Zeitüberschreitung in der Sperrberechtigungsdatei /home/sam/.Xauthority

ANMERKUNG: Ich habe versucht, eine X11-Benutzeroberfläche über eine SSH-Verbindung per Fernzugriff anzuzeigen, damit ich xautheine $HOME/.XauthorityDatei erfolgreich erstellen konnte. Dies war jedoch offensichtlich nicht der Fall .

Versuche, X11-basierte Apps auszuführen, wurden wie xeyesfolgt beantwortet:

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

Wie kann ich dieses Problem beheben?

slm
quelle
1
Ich fand diese Seite hilfreich, da mein Problem darauf zurückzuführen war, dass sich Selinux im Erzwingungsmodus befand und die Datei daher nicht erstellt werden konnte: twiki.cern.ch/twiki/bin/view/CLIC/LCDTroubleShooting
Gav Reichel

Antworten:

39

Wenn Sie straceauf dem fernen System ein ausführen, bei xauthdem ein Fehler auftritt, werden Sie darüber informiert, was passiert xauth.

Beispielsweise

$ 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

Es xauthwird also versucht, eine Datei zu öffnen, die bereits vorhanden ist. Die Täterdatei ist /home/sam/.Xauthority-c. Wir können das Vorhandensein dieser Datei auf dem fernen System bestätigen:

$ 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

Die Reparatur

Wie sich herausstellt. Diese Dateien sind Sperrdateien für .Xauthority. Durch einfaches Entfernen wird das Problem behoben.

$ rm -fr .Xauthority-*

Wenn die Dateien gelöscht sind, beenden Sie die SSH-Verbindung und stellen Sie die Verbindung wieder her. Dies ermöglicht xautheine erfolgreiche erneute Ausführung.

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

Jetzt können wir xauth listX11-Anwendungen ohne Probleme ausführen .

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

Die GUI

$ xeyes

                                              ss # 1

Alternative Methode zur Behebung des Problems

Ich bin auf folgenden Beitrag gestoßen : xauth: Fehler beim Sperren der Berechtigungsdatei .Xauthority [linux, ssh, X11], in dem die Verwendung von xauth -bzum Aufheben von eventuell herumhängenden Sperrdateien erwähnt wird . xauthDie Manpage von scheint dies zu stützen:

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

Verweise

slm
quelle
1
Wissen Sie, warum diese Sperrdateien zurückgelassen wurden?
Gilles 'SO- hör auf böse zu sein'
@ Gilles - nein, ich hatte den gleichen Gedanken. Ich habe sie gelöscht und dann gedacht, ich hätte versuchen sollen, zu untersuchen, was die Steuerung mit ihnen war lsof. Ich hatte sie schon einmal gesehen, kann mich aber nicht erinnern, wo. Ich dachte, Sie und ich haben sie an einem früheren Punkt besprochen, konnten aber auf der Website keine Erwähnung finden.
SLM
1
Möglicherweise müssen Sie SELinux-Probleme beheben, bevor Sie die Berechtigungsdateien löschen können. Siehe froebe.net/blog/2015/01/20/…
MrMas
In meinem Fall hatten die Datei und das Verzeichnis den falschen Besitzer (nachdem das Ausgangsverzeichnis des Benutzers auf einen anderen Computer kopiert wurde).
Ken Sharp
In meinem Fall waren die Berechtigungen für den Ordner / home / userroot:root statt user:user. Behoben durch chown user:user /home/user.
0andriy
8

Die Ursache des Problems könnte sein, dass Sie keine Schreibberechtigung im Verzeichnis $ HOME haben.

Deshalb habe ich diese Nachricht bekommen:

/ usr / bin / xauth: Zeitüberschreitung in der Sperrberechtigungsdatei /home/fooftp/.Xauthority

So habe ich die Erlaubnis überprüft:

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.

Wenn dies das Problem ist, müssen Sie sicherstellen, dass Sie über Schreibberechtigungen für $ HOME verfügen:

chmod u+rwX $HOME
guettli
quelle
3

Ich habe eine andere Antwort auf die Frage, die mich plagte, bevor ich das Problem herausgefunden habe. Das Problem ist ein Fehler in Fedora OS und seinen Derivaten, wie ich später herausgefunden habe. Wenn das Problem nicht mit der akzeptierten Antwort übereinstimmt und / oder Sie nicht mit Fedora, RedHat, Korora usw. arbeiten, hilft Ihnen dies nicht weiter.

Das Problem

Wie der Benutzer slm sagte, gibt Ihnen das Ausführen von strace einen Hinweis auf das Problem. In diesem speziellen Fall ist die Ausgabe jedoch anders:

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

Um klar zu sein, besagt dies, dass der EACCES-Rückgabecode, dem die Berechtigung verweigert wurde. Dies unterscheidet sich vom Problem des Benutzers slm, bei dem er den EEXIST-Rückkehrcode hatte, was bedeutet, dass die Datei vorhanden ist. Für den EACCES-Rückkehrcode ist das erste, was Sie überprüfen, offensichtlich: Sind meine Home-Berechtigungen so eingerichtet, dass ich in mein Home-Verzeichnis schreiben kann? Sie sollten zunächst überprüfen, ob Sie das Schreibflag für Ihren eigenen Benutzer in Ihrem Ausgangsverzeichnis haben. Wenn Sie dies tun, sind Sie möglicherweise ein Opfer des nachfolgend beschriebenen Fehlers.

Der Käfer

Durch ein paar Google-Suchen konnte ich endlich jemanden mit einem ähnlichen Problem finden, und es führte mich zum Fedora-Fehlerbericht. Für diejenigen unter Ihnen, die darüber lesen möchten: möchten https://bugzilla.redhat.com/show_bug.cgi?id=772992

Die Problemumgehung

Die Problemumgehung für das Problem:

#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

Wenn Sie SSH wieder aktivieren, sollte dies zu diesem Zeitpunkt in Ordnung sein und Sie sollten in der Lage sein, Ihre X-Sitzung erneut erfolgreich zu übertragen.


EDIT (und andere alternative Problemumgehungen):

Um so vollständig wie möglich zu sein, gaben andere Benutzer im Fehlerbericht an, dass das oben genannte Update für sie nicht funktioniert hat - es hat für mich zufällig funktioniert. Ein weiterer Versuch, das Problem zu umgehen, war (ich habe diese Problemumgehung nicht persönlich überprüft):

# setsebool -P use_nfs_home_dirs 1

Eine andere Person erwähnt etwas über GDM, von dem ich nichts weiß. In diesem Fall empfehle ich, seinen Beitrag in BugZilla zu lesen und zu prüfen, ob sein Kommentar etwas für Sie bedeutet.

Suchmaschine27
quelle
1
Dies ist bei aller Länge unklar. Was ist das Problem? Was ist die Lösung / Problemumgehung? Was tut es? Wann sollten wir erwarten, dass Lösung 1 nicht funktioniert?
Scott
Ich verstehe nicht, was Sie fragen. Die Frage hatte ein ziemlich klares Problem. Die Lösung 1 hatte eine ziemlich klare Lösung für eine Variation dieses Problems. Lösung 1 hatte eine ziemlich klare Darstellung des Problems in seiner Antwort. Mein Problem war, wie oben erwähnt, deutlich anders, weshalb meine Lösung für die Lösung dieses Problems auch deutlich anders war. Was brauchst du zur Klärung, um dies klarer zu machen, denke ich, ist meine Frage an dich?
Suchmaschine27
Ich habe versucht, einige Aktualisierungen der Antwort vorzunehmen, aber ich weiß ehrlich gesagt nicht, wie ich es klarer machen kann, ohne zu wissen, was Sie speziell daran stört.
Suchmaschine27
1
Bestätigt und Problemumgehung behebt das Problem für CentOS 6.9
kap
0

Die SELinux-Konfiguration ist das allererste, was Sie sich ansehen sollten.

*/usr/sbin/sestatus*

oder

*/usr/sbin/sestatus -v*

Wenn die SELinux-Konfiguration auf "Erzwingen" gesetzt ist , kann dies das Problem "xauth" verursachen .

 /usr/sbin/setenforce 0

Sie können den vorläufigen "permisiven" Modus wie folgt festlegen (um dieses Problem als Grundursache des Problems ausschließen zu können). .

Befolgen Sie dann ein SELinux-Tutorial, um eine ordnungsgemäße Konfiguration einzurichten, oder deaktivieren Sie es, wenn Sie eine andere Sicherheitsmethode bevorzugen (z. B. durch Bearbeiten der Konfigurationsdatei / etc / selinux / config in RHEL v.6).

fjcobas
quelle