Рейтинг:7

разрешение отклонено, когда Evince пытается использовать Chrome для открытия ссылки

флаг jp

Я знаю, что есть вопросы о проблемах с открытием ссылок Evince, но это похоже на новую ошибку. Это в 21.04, но я думаю, что ошибка совсем свежая, т.е. ссылки работали раньше в 21.04. Итак, я запустил evince из командной строки, и когда я попытался открыть ссылку в документе, я получил эту ошибку:

[205689:205689:0812/101716.420196:FATAL:double_fork_and_exec.cc(131)] execv /opt/google/chrome/crashpad_handler: Отказано в доступе (13)

Это evince 40.1 и Chrome 92.0.4515.131.

Я представил проблему evince по этому поводу: https://gitlab.gnome.org/GNOME/evince/-/issues/1646 и определил, что проблема заключается в AppArmor, который не позволяет evince вызывать Chrome (но позволяет ему использовать Firefox). Поэтому мне нужно изменить профиль AppArmor для evince. Я понятия не имею, как это сделать. Я пытался использовать aa-logprof, но мне явно нужны инструкции, которые я могу понять. Я был бы признателен за любые указатели, которые шаг за шагом показывают, как внести необходимые изменения в профиль evince.

Обновлять: Успех. Я добавил эту строку в профиль sanitized_helper в abstractions/ubuntu_helpers:

/opt/google/chrome/crashpad_handler Pixr,

и перезагрузил профиль evince. Теперь я получаю эти ошибки при переходе по ссылке:

[20036:20069:0813/075235.070369:ОШИБКА:address_tracker_linux.cc(195)] Не удалось создать сокет NETLINK: Отказано в доступе (13)
[20036:20065:0813/075235.071590:ОШИБКА:udev_watcher.cc(52)] Не удалось инициализировать монитор udev.
Открытие в существующей сессии браузера.

И ссылка успешно открылась в новой вкладке Chrome.

флаг ru
Начните с запуска `tail -f /var/log/syslog | grep -i apparmor` в терминале. Тогда попробуйте открыть ссылку. Поделитесь выводом отказов apparmor, чтобы мы могли начать указывать вам, куда вам нужно обратиться для исправления, поскольку в нем будет указана конкретная политика, которая влияет, а затем мы сможем обновить политику позже.
флаг jp
13 августа 05:38:20 ядро ​​​​ratel: [52504.309148] аудит: тип = 1400 аудит (1628858300.725: 61): apparmor = "ОТКЛОНЕН" операция = "exec" профиль = "/usr/bin/evince//sanitized_helper" имя = "/opt/google/chrome/crashpad_handler" pid=16475 comm="chrome" required_mask="x" disabled_mask="x" fsuid=1000 ouid=0 В комментарии к моему отчету gitlab было высказано предположение, что проблема, по-видимому, заключается в том, что исполняемые файлы chrome находятся в /opt/google/chrome, а не в «нормальном» месте, таком как /usr/bin.
флаг jp
Профиль sanitized_helper, определенный в ubuntu_helpers, включенный косвенно из профиля evince, по-видимому, разрешает выполнение вещей в /opt/google/chrome, но не в crashpad_handler.
Gert Willems avatar
флаг cn
Мне также пришлось использовать префикс chrome_ в моей Ubuntu 20.04, версия Chrome 96.0.4664.45 (официальная сборка) (64-разрядная версия)
Рейтинг:10
флаг jp

Отредактируйте файл ubuntu-helpers:
sudo gedit /etc/apparmor.d/abstractions/ubuntu-helpers
Под профиль sanitized_helper {,
найти строки, начинающиеся с /opt/google/chrome.
Добавьте эту строку:
/opt/google/chrome/crashpad_handler Pixr,
Сохраните файл.
Перезагрузите профиль evince (находясь в /etc/apparmor.d):
sudo apparmor_parser -r usr.bin.evince

флаг cn
Большое спасибо! Работал и под Debian 11. Для последней части вы можете просто запустить sudo service apparmor restart.
флаг cn
Я использовал `/opt/google/chrome/chrome_crashpad_handler Pixr`, поскольку в этом пути не было ничего с таким именем `/opt/google/chrome/crashpad_handler`, и решение сработало. Затем я вернулся к вашему решению, оно перестало работать. Затем я вернулся к своему решению. :|
флаг jp
В моей системе это все еще chrome_crashpad_handler. Это версия Chrome 94.0.4606.61 (официальная сборка) (64-разрядная версия). Очень странно, что имя будет другим в вашей системе.
флаг cn
Я второй @ssi-anik, что, например, Debian 11 (Bullseye) имеет префикс chrome перед crashpad_handler, поэтому ответ @ssi-anik хорош в некоторых случаях.
Rob Rutten avatar
флаг ru
Мне также нужен префикс chrome_. Работает в моей Ubuntu 18,04!
флаг ng
Вы можете найти пути с помощью `$ dpkg -S `. У меня стандартный Chrome от Google (не хром или какая-то другая альтернатива). Для пути ответа: `dpkg-query: не найден путь, соответствующий шаблону /opt/google/chrome/crashpad_handler`. С префиксом chrome_: google-chrome-stable: /opt/google/chrome/chrome_crashpad_handler.
флаг ng
Вместо этого добавление этой строки охватывает оба случая: `/opt/google/chrome{,-beta,-unstable}/{,chrome_}crashpad_handler Pixr,`
water stone avatar
флаг in
У меня также есть только /opt/google/chrome/chrome_crashpad_handler, нет /opt/google/chrome/crashpad_handler (прежнее имя файла понятнее)
water stone avatar
флаг in
Перезагрузите профиль evince из любого каталога: sudo apparmor_parser -r /etc/apparmor.d/usr.bin.evince
Рейтинг:2
флаг jp

Я создал запрос на слияние в AppArmor, чтобы решить эту проблему:

https://gitlab.com/apparmor/apparmor/-/merge_requests/830

David avatar
флаг cn
А потом, когда ссылки не будет? Если в ссылке есть важная информация, включите ее в ответ.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.