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 для каждого из них.

  • прозрачность терминала, проблема с Imagemagick и X11
  • Почему Debian Bug-Squash занимает много времени по сравнению с Ubuntu?
  • Как я могу воспроизвести звук, когда выполнение скрипта будет готово?
  • tun0 после установки openvpn
  • Файлы отображаются в другом часовом поясе после передачи на другой компьютер (хотя оба компьютера имеют одинаковый часовой пояс)
  • MacBook Air (середина 2013 года) не может приостановиться должным образом после отсоединения от сети переменного тока
  • Как проверить, разрешены ли CONFIG_HIGH_RES_TIMERS?
  • Hibernate не работает с двойной загрузкой Ubuntu и Kali Linux
  • Тайна небольшого раздела жесткого диска 1K и безопасна или вредоносная программа на Ubuntu 12.04.02LTS Amd64 generic
  • Не удается получить доступ к веб-серверу, но может ssh к нему
  • Можно ли пометить диск, а не раздел?
  • Interesting Posts

    Как извлечь имя столбца (заголовок) из файла CSV, который содержит максимальное значение в строке?

    Обратный режим AutoSSH работает, но проксированные порты LISTEN случайным образом выходят из строя

    помощь для создания сценария оболочки для печати буднего дня и выходных

    Ожидается ли время ожидания ожидания SSH, если для iptables установлено значение REJECT?

    Какова цель почтовых бланков?

    Почему я должен использовать Debian 6 с ядром FreeBSD?

    Как установить пакет vsftpd

    Двойная загрузка Windows 7 и Mint 14 с опцией «что-то еще»

    Что такое пользователь и группа JDK по умолчанию?

    Звук прекратил работу после обновления Ubuntu с 14.04 по 16.04

    Резервный установлен RPM

    Несколько загрузок: Windows-10 по Linux?

    bash / cygwin сломан после установки rtool?

    Как получить количество данных между двумя строками с несколькими вхождениями в одном файле

    Что означает «0x0030: 061c 0dd8 4745 5420 2f20 4854 5450 2f31» означает в tcpdump?

    Linux и Unix - лучшая ОС в мире.