Evince не запускается, потому что он не может читать .Xauthority

Я удален удаленно через SSH с пересылкой X на машину с Ubuntu 10.04 (lucid). Большинство приложений X11 (например, xterm, gnome-terminal) работают нормально. Но Эвинс не начинается. Кажется, что он не может читать ~/.Xauthority , даже несмотря на то, что файл существует и, очевидно, читается (он имеет права доступа и другие приложения, это просто отлично).

 $ evince X11 connection rejected because of wrong authentication. Cannot parse arguments: Cannot open display: $ echo DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY DISPLAY=localhost:10.0 XAUTHORITY= $ strace evince … access("/home/gilles/.Xauthority", R_OK) = 0 open("/home/gilles/.Xauthority", O_RDONLY) = -1 EACCES (Permission denied) … $ ls -l ~/.Xauthority -rw------- 1 gilles gilles 496 Jul 5 13:34 /home/gilles/.Xauthority 

Что такого особенного в Evince, что он не может читать ~/.Xauthority ? Как я могу начать?

2 Solutions collect form web for “Evince не запускается, потому что он не может читать .Xauthority”

TL, DR: это ошибка Apparmor, и из-за того, что мой домашний каталог находится вне /home .

При установке Ubuntu 10.04 по умолчанию пакет apparmor вытягивается как косвенная зависимость уровня рекомендаций стандартного пакета ubuntu . Системные журналы ( /var/log/syslog ) показывают, что Apparmor отклоняет попытку Evince читать ~/.Xauthority :

Jul 5 17:58:31 darkstar kernel: [15994724.481599] type=1503 audit(13415 03911.542:168): operation="open" pid=9806 parent=9805 profile="/usr/bin/evince" requested_mask="r::" denied_mask="r::" fsuid=1001 ouid=1001 name="/elsewhere/home/gilles/.Xauthority"

Конфигурация Evince по умолчанию для Apparmor (в /etc/apparmor.d/usr.bin.evince ) очень разрешительна: она позволяет произвольные чтения и записи во всех домашних каталогах. Однако мой домашний каталог на этом компьютере является символической ссылкой на нестандартное местоположение, которое не указано в конфигурации AppArmor по умолчанию. Доступ разрешен в /home , но реальное местоположение моего домашнего каталога есть /elsewhere/home/gilles , поэтому доступ запрещен.

Другие приложения, на которые может повлиять эта проблема, включают:

  • Firefox, но его профиль отключен по умолчанию (наличием символической ссылки /etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox ).
  • CUPS PDF-печать; Я не тестировал, но я ожидаю, что он не сможет писать в ~/PDF .

Мое исправление заключалось в том, чтобы отредактировать /etc/apparmor.d/tunables/home.d/local и добавить строку

 @{HOMEDIRS}+=/elsewhere/home/ 

иметь нестандартное расположение домашних каталогов (обратите внимание, что окончательный / важен, см. комментарии в /etc/apparmor.d/tunables/home.d/ubuntu ), затем запустите /etc/init.d/apparmor reload чтобы обновить настройки Apparmor.

Если у вас нет прав администратора, и системный администратор не отвечает, вы можете скопировать двоичный файл evince в другое место, например ~/bin , и оно не будет покрываться политикой Apparmor (так что вы сможете запустите его, но не получите очень ограниченную дополнительную безопасность, которую предоставляет Apparmor).

Об этой проблеме сообщалось как ошибка Ubuntu # 447292 . Разрешение обрабатывает случай, когда некоторые пользователи имеют свой домашний каталог, указанный в /etc/passwd вне /home , но не такие случаи, как my where /home/gilles являются символической ссылкой.

Имела та же проблема, и ваш ответ указал мне в правильном направлении. Я нашел другое решение, которое не требует редактирования конфигурации apparmor. Вместо использования символической ссылки для перенаправления доступа к /home используйте параметр bind на mount . Я добавил следующую строку в /etc/fstab :

 /elsewhere/home /home none bind 

Как только вы это сделаете, apparmor даже не узнает, что каталоги под /home «действительно» находятся где-то в другом месте, поэтому жалобы исчезнут.

Преимущество этого подхода заключается в том, что он будет работать для всех приложений без необходимости редактировать другой файл конфигурации apparor для каждого из них.

  • Количество запущенных процессов отображается сверху
  • Файловая система mhddfs зависает через некоторое время с большой папкой
  • Добавление ярлыка в службу start-stop-daemon в списке процессов
  • «Не может найти crtc для вывода VGA-0» из xrandr
  • Почему Ubuntu не использует возможности для ping?
  • как проверить версию ядра, которая использовалась при создании пакета
  • Ограничения / etc / profile в Gnome
  • fdisk не может открыть
  • Как проверить, какая версия vncserver установлена ​​на моем компьютере?
  • Проблемы с iPod в Rhythmbox
  • временная установка пути в файле «init»
  • Linux и Unix - лучшая ОС в мире.