文档查看器(Evince)无法打开 PDF 文档中的超链接

文档查看器(Evince)无法打开 PDF 文档中的超链接

在 evince 中查看 PDF 文档时,单击超链接(在本例中为 Web 链接)会导致光标变为旋转的“忙碌”符号,并且浏览器不会启动。使用dmesg查看错误时,我看到以下错误。这大约一个月前开始的。我不知道我更改了配置中的任何内容。Ubuntu 21.10 已完全更新。Brave 浏览器(1.32.113)是默认浏览器。

[32979.539575] audit: type=1400 audit(1638841732.708:94): apparmor="DENIED" operation="exec" profile="/usr/bin/evince//sanitized_helper" name="/opt/brave.com/brave/chrome_crashpad_handler" pid=39499 comm="brave" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0
[32979.539807] traps: brave[39499] trap int3 ip:5616e1a1c3c1 sp:7ffe260ee8a0 error:0 in brave[5616dd77b000+9d5e000]

答案1

Riyan 的回答给我带来了错误,但以下命令有效:

sudo ln -s /etc/apparmor.d/usr.bin.evince /etc/apparmor.d/disable/ 
sudo apparmor_parser -R /etc/apparmor.d/disable/usr.bin.evince

, 看https://linuxconfig.org/how-to-disable-apparmor-on-ubuntu-20-04-focal-fossa-linux

答案2

这是 apparmor 和 evince 的一个已知问题,gnome 开发人员认为,由于这是 apparmor 的问题,因此不属于他们的职责范围。因此,用户/发行版必须正确设置 apparmor 配置文件。

请参阅 gnome 的 gitlab 上的这个问题:https://gitlab.gnome.org/GNOME/evince/-/issues/1090

我遇到了同样的问题,这篇文章解决了该问题:https://askubuntu.com/a/1214362/1554738

或者因为我禁用了 evince 的 apparmor 配置文件 https://help.ubuntu.com/community/AppArmor

我使用以下命令来禁用 apparmor 配置文件:

禁用一个配置文件


sudo ln -s /etc/apparmor.d/usr.bin.evince /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/profile.name

之后您必须重新启动计算机。

答案3

您可以使用 apparmor-utils 来调试和禁用配置文件。此软件包在 Ubuntu 20.04 和一些 Debian 版本(例如 Bulleye,我正在测试)中可用。

sudo apt install apparmor-utils
sudo aa-complain /usr/bin/evince

再次测试 PDF 中的链接。这次它不会阻止操作,而是应该在登录到 /var/log/syslog 时在浏览器中打开链接。这对我来说很有效,evince 现在按预期触发 URL。

投诉模式意味着“违反政策的行为只会被记录”(https://wiki.debian.org/AppArmor/HowToUse)。您还可以禁用应用程序的策略:

sudo aa-disable /usr/bin/evince

URL 现在应该可以触发,而不会在 /var/log/syslog 中出现日志消息。或者您可以重新启用该策略:

sudo aa-enforce /usr/bin/evince

我必须在 evince 中重新加载 PDF 才能再次执行策略(要阻止的 URL)。

您可以使用以下方式检查当前使用强制或投诉配置文件运行的 apparmor 配置文件和进程的状态(在测试期间的任何时间):

sudo aa-status

更多信息:https://wiki.debian.org/AppArmor/HowToUse

答案4

(这个答案是我研究了大约20分钟后得出的理解。)

此处的大多数答案实际上禁用了 Evince 的 AppArmor。但 AppArmor 是一款强制应用程序在系统上执行权限的软件。由于您在 Evince 中打开的 PDF 可能包含各种脚本,因此这可能是不明智的。

@am70 的回答更具体:它为 Evince 提供了以下内容权限遍历给定路径中的所有文件:

  • 阅读 (r),
  • 使用继承的权限执行(ix),即 Evince 可以调用那里的应用程序,并且它们将继承 Evince 的权限。

但是,这个答案对我来说不起作用,因为这些路径不是我的浏览器所在的位置。我这样做了which firefox(因为 Firefox 是我的默认浏览器)并得到了答案,/usr/bin/firefox所以在退出 Evince 后,我添加了权限

  # allow firefox
  /usr/bin/firefox ixr,

到文件/etc/apparmor.d/abstractions/evince(虽然# supported archivers我猜这并不重要),然后重新加载所有 AppArmor 策略文件(我假设它们就是这样)使用

sudo apparmor_parser -R /etc/apparmor.d

现在,当我单击链接时,Evince 会在 Firefox 中打开链接。

相关内容