TL, DR: это вина Apparmor, и из-за того, что мой домашний каталог находится снаружи /home
.
При установке по умолчанию Ubuntu 10.04 пакет apparmor включается как косвенная зависимость уровня Recommended пакета ubuntu-standard . Системные журналы ( /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 (in /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
, но не такие случаи, как мой, где /home/gilles
есть символическая ссылка.
Была такая же проблема, и ваш ответ указал мне правильное направление. Я нашел другое решение, которое не требует редактирования конфигурации apparmor. Вместо использования символической ссылки для перенаправления доступа
/home
используйтеbind
параметр onmount
. Я добавил следующую строку/etc/fstab
:Как только вы сделаете это, apparmor даже не узнает, что каталоги
/home
«действительно» находятся где-то еще, поэтому жалобы исчезнут.Преимущество этого подхода состоит в том, что он будет работать для всех приложений, без необходимости редактировать разные файлы конфигурации apparmor для каждого из них.
источник
/home
а другие нет/home
. Вариант для этого случая заключается в связывании монтажа/elsewhere/home/gilles
в/home/gilles
или/elsewhere/home
на/home/elsewhere
.