Назад | Перейти на главную страницу

Спорадический '.Xauthority не доступен для записи, изменения будут игнорироваться' при переходе из OSX в Linux

Время от времени, когда пользователи SSH со своей рабочей станции OS X (Snow Leopard) на один из наших хостов Linux, они получают сообщение:

/usr/bin/xauth: ~/.Xauthority not writable, changes will be ignored

Конечно, их приложения с перенаправлением X не будут работать на этом этапе.

Однако, если они выйдут из системы и снова войдут в систему, они не получат сообщение и все будет работать должным образом.

На своем Mac они получают домашний каталог через AFP. Машины Linux получают его через NFS.

Есть идеи о том, что здесь может происходить?

Я не могу не задаться вопросом, видите ли вы состояние гонки, возможно, что-то вроде этого:

  • Пользователь входит в клиент OS X, который монтирует домашнюю папку через AFP.
  • Пользователь sshes в хост Linux, который монтирует дом, который смонтировал клиент OS X, но делает это через AFP.
  • Хост Linux читает (записывает?) В ~ / .Xauthority, и файл заблокирован - либо намеренно (как часть процесса проверки), либо нет (что-то делает сервер, чтобы предотвратить запись одного и того же файла двумя системами, использующими разные протоколы, или черт возьми, чтобы две разные системы не могли одновременно обрабатывать один файл, независимо от протокола).
  • Исходный клиент Mac OS X хочет записать данные о сеансе [в сторону: я действительно не знаю, для чего используется .Xauthority] и пытается получить доступ к файлу
  • Сообщается, что файл заблокирован
  • Примерно в это время ящик Linux готов с файлом, и он становится разблокированным.

При другой попытке это может быть так:

1) они пытаются подключиться к известному хосту, а клиент OS X не должен записывать какую-либо информацию и не имеет доступа к .Xauthority, или 2) время истекло настолько, что две системы не пытаются использовать один и тот же файл одновременно [следовательно, это состояние гонки].


Я не уверен, как вы могли определить, так ли это. Я думаю, вы могли бы использовать fs_usage команда на сервере (или инструмент с графическим интерфейсом, например fseventer), чтобы увидеть, осуществляется ли быстрый доступ к одному и тому же файлу, хотя это не обязательно что-либо доказывает.

Вы могли бы почерпнуть полезную информацию, используя lsof, либо в файлах, либо в (lsof -i) сетевые соединения. Возможно, вы можете включить ведение журнала для AFP и NFS (или использовать nfsstat?) и перекрестные ссылки на них.

Я бы подумал о компиляции iftop, но все, что вы должны увидеть при его запуске, это то, что да, есть подключения к серверу как от клиента Mac, так и от клиента Linux, и они используют разные порты и передают информацию.

Я бы рекомендовал иметь тестового пользователя ssh для использования разных учетных записей на клиенте Mac и хосте Linux на некоторое время и посмотреть, возникнет ли у них проблема. Если это не так, то это как-то связано с использованием одной и той же учетной записи в двух местах одновременно (и, скорее всего, из-за двойного монтирования домашней папки).


Возможно, стоит посмотреть, сможете ли вы настроить OS X и Linux для использования разных копий файла Xauthority. (Я не уверен, что вы вообще можете это сделать).

Я бы также попробовал, чтобы тестовый пользователь получил доступ к своей домашней папке в OS X через NFS и посмотрел, имеет ли это значение.

Если бы это было когда-то давным-давно, запустив несколько десятков X-приложений через ssh. ssh использует xauth, который сам блокирует файл .Xauthority и просто выйдет из строя, если не сможет его заблокировать. Решили это тогда, изменив программу xauth, чтобы вместо этого вращать блокировку, но у меня больше нет патча.

Если для файла ssh_config не задан ForwardX11, возможно, вам придется использовать -X в команде ssh. I.E. видишь ли, если

ssh -X имя-машины

работает