xauthからこのメッセージを受け取るのはなぜですか:「認証ファイル/home/<user>/.Xauthorityのロック中のタイムアウト」


32

ホストにSSHで接続しようとしたときに、次のメッセージを受け取りましたxauth

/ usr / bin / xauth:権限ファイル/home/sam/.Xauthorityのロックのタイムアウト

注: X11 GUIをSSH接続経由でリモート表示しようとしていたのでxauth$HOME/.Xauthorityファイルを正常に作成できるようにする必要がありましたが、そのメッセージが示すように、明らかにそうではありませんでした。

xeyesこのメッセージで挨拶されたような、X11ベースのアプリを実行しようとします。

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

この問題を解決するにはどうすればよいですか?


1
私の問題はselinuxが強制モードであるためにこのページが役に立ちました。そもそもファイルが最初に作成されなかったため
Gav Reichel

回答:


39

失敗straceしているリモートシステムでを実行すると、xauth何がトリップするかがわかりますxauth

例えば

$ 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

そのxauthため、ファイルを開こうとしていますが、すでに存在しています。原因ファイルは/home/sam/.Xauthority-cです。リモートシステム上のこのファイルの存在を確認できます。

$ 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

修正

それが判明したとして。これらのファイルはのロックファイルであるため.Xauthority、削除するだけで問題は解決します。

$ rm -fr .Xauthority-*

ファイルを削除したら、SSH接続を終了してから再接続します。これによりxauth、正常に再実行できます。

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

xauth listX11アプリケーションを問題なく実行できるようになりました。

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

GUI

$ xeyes

                                              ss#1

問題を解決する代替方法

私はと題するこの記事に出くわした:XAUTH:エラー許可ファイル.Xauthorityを[linuxの、SSH、X11]ロックでの使用に言及xauth -bぶらぶらすることができる任意のロックファイルを破るために。xauthのmanページはこれを裏付けているようです:

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

参照資料


1
これらのロックファイルが残された原因を知っていますか?
ジル 'SO-悪であるのをやめる'

@Gilles-いいえ、私は同じ考えを持っていました。それらを削除してから、を使用してそれらを制御しているものを掘り下げてみるべきだと考えましたlsof。私は前にそれらを見たことがありますが、どこで覚えていることができません。私はあなたと私は以前にそれらについて議論したと思ったが、サイトでそれらの言及を見つけることができなかった。
slm

1
権限ファイルを削除する前に、SELinuxの問題を修正する必要がある場合があります。froebe.net/blog/2015/01/20/を
MrMas

私の場合、ファイルとディレクトリの所有者が間違っていました(ユーザーのホームディレクトリを別のコンピューターにコピーした後)。
ケンシャープ

私の場合、/ home / userフォルダーへのアクセス権はのroot:root代わりになりましたuser:user。によって修正されましたchown user:user /home/user
-0andriy

8

問題の根本は、$ HOMEディレクトリに書き込み権限がないことです。

それが私がこのメッセージを受け取った理由です:

/ usr / bin / xauth:権限ファイル/home/fooftp/.Xauthorityのロックのタイムアウト

許可を確認する方法は次のとおりです。

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.

これが問題である場合は、$ HOMEへの書き込み権限があることを確認する必要があります。

chmod u+rwX $HOME

3

私は問題を理解する前に私を悩ませた質問に対する別の答えを持っています。この問題はFedora OSのバグであり、派生したものです。後でわかりました。問題が受け入れられた回答で示されていない場合、および/またはFedora、RedHat、Kororaなどを使用していない場合、これは役に立ちません。

問題

ユーザーslmが言ったように、straceを実行すると問題が示されますが、この特定のバグの場合、出力は異なります。

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

明確にするために、これはEACCES戻りコード(許可されていない)を示しています。これは、ユーザーslmの問題とは異なります。ユーザーslmにはEEXIST戻りコードがあり、Fileが存在することを意味します。したがって、EACCESリターンコードの場合、明らかに最初に確認するのは、ホームディレクトリに書き込むことができるようにホームアクセス許可が設定されていることです。まず、自分のユーザーのホームディレクトリに書き込みフラグがあることを確認する必要があります。そうした場合、以下に説明するバグの被害者になる可能性があります。

不具合

いくつかのグーグル検索を通じて、ようやく同様の問題を抱えている人を見つけることができ、Fedoraのバグレポートに至りました。https://bugzilla.redhat.com/show_bug.cgi?id=772992を読みたい人のために

回避策

問題の回避策:

#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

SSHに戻った時点で、この時点で問題はなく、Xセッションを再び正常に転送できるはずです。


編集(および他の代替回避策):

可能な限り完全にするために、他のユーザーはバグレポートで、上記の修正は機能しなかったと述べていました。問題を回避する別の試みは次のとおりです(この回避策を個人的に確認しませんでした)。

# setsebool -P use_nfs_home_dirs 1

別の人がGDMについて何か言及していますが、これについてはまったく知りません。それがあなたに関係する場合は、BugZillaで彼の投稿を読んで、彼のコメントがあなたにとって何か意味があるかどうかを確認することをお勧めします。


1
すべての長さについて、これは不明です。何が問題ですか?解決策/回避策は何ですか?それは何をするためのものか?ソリューション#1が機能しないことをいつ予想する必要がありますか?
スコット

あなたが何を求めているのか分かりません。質問にはかなり明確な問題がありました。解決策1には、その問題のバリエーションに対する非常に明確な解決策がありました。解決策1には、彼の回答で具体的に問題が何であったかを示す明確な方法がありました。上記のように、私の問題は明らかに異なっていたため、その問題を解決するための解決策も明らかに異なっていました。これをより明確にするために明確にする必要があるのは、あなたへの私の質問だと思いますか?
searchengine27

私は答えにいくつかの更新を試みましたが、私はそれについてそれ以上明確にする方法を正直に知りません。
searchengine27

1
確認された回避策は、CentOS 6.9の問題を解決します
kap

0

SELinuxの設定は、最初にチェックアウトするもので、...

*/usr/sbin/sestatus*

または

*/usr/sbin/sestatus -v*

SELinux構成が「強制」に設定されている場合、「xauth」問題が発生している可能性があります。

 /usr/sbin/setenforce 0

次のように「permisive」モードに暫定的に設定できます(問題の根本原因としてこの問題を除外できるようにするため)

次に、SELinuxチュートリアルに従って適切な構成を配置するか、別のセキュリティメソッドが必要な場合は無効にします(f.ex.RHEL v.6で/ etc / selinux / config構成ファイルを編集して)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.