当 Evince 尝试使用 Chrome 打开链接时权限被拒绝

当 Evince 尝试使用 Chrome 打开链接时权限被拒绝

我知道 Evince 打开链接时存在问题,但这看起来像是一个新的错误。这是在 21.04 中,但我认为错误是最近才出现的,即链接在 21.04 中早些时候就起作用了。因此,我从命令行启动了 evince,当我尝试打开文档中的链接时,出现了此错误:

[205689:205689:0812/101716.420196:FATAL:double_fork_and_exec.cc(131)] execv /opt/google/chrome/crashpad_handler: Permission denied (13)

这是 evince 40.1 和 Chrome 92.0.4515.131

我提交了一个关于此问题的证据:https://gitlab.gnome.org/GNOME/evince/-/issues/1646 并确定问题出在 AppArmor 上,它阻止 evince 调用 Chrome(但允许它使用 Firefox)。所以我需要修改 evince 的 AppArmor 配置文件。我不知道该怎么做。我尝试使用 aa-logprof,但我显然需要我能理解的说明。如果能提供分步说明如何对 evince 配置文件进行必要的修改,我将不胜感激。

更新:成功。我在 abstractions/ubuntu_helpers 中的 sanitized_helper 配置文件中添加了以下行:

/opt/google/chrome/crashpad_handler Pixr,

并重新加载了 evince 配置文件。现在,我在点击链接时收到以下错误:

[20036:20069:0813/075235.070369:ERROR:address_tracker_linux.cc(195)] Could not create NETLINK socket: Permission denied (13)
[20036:20065:0813/075235.071590:ERROR:udev_watcher.cc(52)] Failed to initialize a udev monitor.
Opening in existing browser session.

并且链接在新的 chrome 选项卡中成功打开。

答案1

编辑文件 ubuntu-helpers:
sudo gedit /etc/apparmor.d/abstractions/ubuntu-helpers
在 下profile sanitized_helper {
找到以 /opt/google/chrome 开头的行。
添加此行:
/opt/google/chrome/crashpad_handler Pixr,
保存文件。
重新加载 evince 配置文件(在 /etc/apparmor.d 中):
sudo apparmor_parser -r usr.bin.evince

答案2

我已经在 AppArmor 上创建了合并请求来解决这个问题:

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

相关内容