Чому я отримую це повідомлення від xauth: "тайм-аут у файлі авторизації блокування / home / <user> /.Xauthority"?


32

Під час спроби SSH в хост я отримав таке повідомлення від xauth:

/ usr / bin / xauth: тайм-аут у файлі авторизації блокування /home/sam/.Xauthority

ПРИМІТКА: Я намагався віддалено відобразити графічний інтерфейс X11 через SSH-з'єднання, тому мені потрібно xauthбуло $HOME/.Xauthorityуспішно створити файл, але, як це повідомлення вказувало, явно це не було.

Спроби запустити будь-які додатки на базі X11, наприклад, xeyesпривітання з цим повідомленням:

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

Як я можу вирішити цю проблему?


1
Я вважаю цю сторінку корисною, оскільки моя проблема була пов’язана з тим, що selinux перебуває в режимі примусового виконання, що перешкоджало створенню файлу в першу чергу: twiki.cern.ch/twiki/bin/view/CLIC/LCDTroubleSearch
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 listбез проблем запускати та X11 програми.

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

GUI

$ xeyes

                                              ss №1

Альтернативний метод вирішення проблеми

Я натрапив на цей пост під назвою: XAUTH: помилка в замок Авторитетний файл .Xauthority [Linux, SSH, X11] , який згадує використання xauth -bрозірвати будь-які файли блокування , які можуть бути стирчати. xauthСторінка man's 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
Чи знаєте ви, що змусило залишити ці файли блокування?
Жил "ТАК - перестань бути злим"

@Gilles - ні, я не мав такої ж думки. Я видалив їх, а потім подумав, я повинен був би спробувати поглибитись у тому, що контролює їх використання lsof. Я бачив їх раніше, але не можу пригадати, де. Я думав, що ви і я обговорювали їх в один момент раніше, але не міг знайти жодної згадки про них на сайті.
slm

1
Можливо, вам доведеться виправити проблеми SELinux перед видаленням файлів авторитету. Дивіться froebe.net/blog/2015/01/20/…
MrMas

У моєму випадку файл та каталог мали неправильного власника (після копіювання домашнього каталогу користувача на інший комп'ютер).
Кен Шарп

У моєму випадку дозволи на папку / home / user були root:rootзамість user:user. Виправлено chown user:user /home/user.
0андрій

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

У мене є ще одна відповідь на запитання, яке набридло мені ще до того, як я з'ясував це питання. Як пізніше я зрозумів, проблема полягає в помилках в OS Fedora та її похідних. Якщо питання не так, як зазначено у прийнятій відповіді, та / або ви не в 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 користувача, де у нього був код повернення EEXIST, що означає, що Файл існує. Отже, для коду повернення EACCES, очевидно, перше, що ви перевіряєте, це: чи налаштовані мої домашні дозволи, щоб я міг записатись у свій домашній каталог? Спершу слід перевірити, чи є у вас домашній каталог прапором для запису власного користувача. Якщо ви це зробите, то ви можете стати жертвою помилки, описаної нижче.

Буг

Через пару пошуків Google я нарешті зміг знайти когось із подібною проблемою, і це призвело мене до звіту про помилки 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-сеанс.


EDIT (та інші альтернативні способи вирішення):

Щоб бути максимально повною, інші користувачі заявляли у звіті про помилку, що виправлення вище не працювало для них - це сталося для мене. Ще одна спроба вирішити цю проблему була (я це не вирішував особисто):

# setsebool -P use_nfs_home_dirs 1

Інша людина згадує щось про GDM, про що я маю нульові знання. Якщо це стосується вас, я рекомендую прочитати його повідомлення в BugZilla і побачити, чи означає його коментар для вас щось.


1
При всій його довжині це незрозуміло. В чому проблема? Що таке рішення / вирішення? Що це робить? Коли слід очікувати, що рішення №1 не спрацює?
Скотт

Я не розумію, про що ви питаєте. Питання мало досить чітку проблему. Рішення 1 мало досить чітке рішення варіації цієї проблеми. Рішення 1 мало досить чіткий спосіб вказати, яка конкретно проблема була у його відповіді. Моя проблема була явно іншою, як зазначено вище, тому моє рішення для вирішення цієї проблеми також було явно іншим. Що вам потрібно для уточнення, що могло б зробити це більш очевидним? Я думаю, це моє питання до вас?
searchchengine27

Я спробував внести деякі оновлення у відповідь, але, чесно кажучи, не знаю, як зробити це більш зрозумілим, ніж це, не знаючи, що конкретно вас у цьому турбує.
searchchengine27

1
Підтверджено та вирішене завдання вирішує проблему для CentOS 6.9
кап

0

Конфігурація SELinux - це найперше, що потрібно перевірити, за допомогою ...

*/usr/sbin/sestatus*

або

*/usr/sbin/sestatus -v*

Якщо для конфігурації SELinux встановлено значення "Enforcing", це може спричинити проблему "xauth" .

 /usr/sbin/setenforce 0

Ви можете попередньо встановити режим "дозвільний" так, щоб мати змогу виключити цю проблему як першопричину проблеми .

Потім виконайте підручник SELinux, щоб встановити належну конфігурацію або відключити її, якщо ви віддаєте перевагу інший спосіб захисту (f.ex.by редагуючи файл конфігурації / etc / selinux / config у RHEL v.6)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.