evince + apparmor + 本地字体 = 一些字体失败

evince + apparmor + 本地字体 = 一些字体失败

我让我的 Debian GNU/Linux 12 “bookworm” 知道非根分区中本地安装的字体:

$ la -la /usr/local/share/fonts/
lrwxrwxrwx  1 root     staff         40  8. Feb 22:16  Folder1 -> '/media/WIN_SYS/Folder1'
lrwxrwxrwx  1 root     staff         33  8. Feb 23:05  Folder2 -> /media/WIN_SYS/Folder2
# fc-cache -fv

之后,evince 在打开某些(并非全部)PDF 文件时开始在控制台上报告一堆错误“某些字体失败”。检查 /var/log/syslog 产生了一堆消息,如下所示

[date&time] MachineName kernel: [210785.968345] audit: type=1400 audit(1708091486.368:26210): apparmor="DENIED" operation="open" profile="/usr/bin/evince" name="/media/WIN_SYS/Folder1/some_font_file.ttf" pid=3000142 comm="EvJobScheduler" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

Courier New, Regularsome_font_file.ttf向 gnome-font-viewer宣传自己。

  1. evince 真的需要 some_font_file.ttf 吗?我看不出 evince 查看器窗口本身有什么不良影响,尽管pdffonts viewed_document.pdf | grep -i cour它会产生一些其他的东西,

    ABCDEE+Courier New                   TrueType          WinAnsi          yes yes no       3  0
    ABCDEE+Courier New                   CID TrueType      Identity-H       yes yes yes     11  0
    CourierNewPSMT                       TrueType          WinAnsi          no  no  no      70  0
    

    我无法重新生成 viewed_document.pdf(它是别人很久以前创建的)。当然,我总有机会在查看 PDF 时忽略一些视觉输出,但到目前为止我还没有注意到。

  1. 如何以最不宽松但又简洁的方式放宽 apparmor 的设置,以允许 evince 从 /media/WIN_SYS/Folder1、/media/WIN_SYS/Folder2 等(包括其子文件夹)获取字体文件?那里有太多的字体文件,并且它们在 Folder1 和 Folder2 中的名称和位置可能会发生变化,因此单独列出每个字体文件不是一个选项。允许 evince 访问所有已安装的非根分区也不是一个选项,因为这是一个不必要的安全风险。

相关内容