我最近安装并完全更新了 Ubuntu 22.04.1 LTS (jammy),64 位 (amd64, x86_64)。我删除了“snapd”及其默认安装的应用程序集,其中包括 Firefox 浏览器(在 22.04 中,默认由“snap”覆盖)。我只是不想依赖“snap”,这篇文章并不是要与“snap”的优缺点有关。
此外,我通过“APT”安装了 Firefox 109.0(64 位),使用了 Mozilla Team 存储库(https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu/)引起我注意的是,在浏览器活动期间会生成大量与 Firefox 相关的“DENIED”AppArmor 日志消息。
以下是 Firefox 启动后立即生成的一组日志条目:
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.813:39): apparmor="DENIED" operation="capable" profile="firefox" pid=2231 comm="firefox" capability=21 capname="sys_admin"
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.877:40): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/revision" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.877:41): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/config" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.877:42): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/revision" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.877:43): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/config" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.885:44): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/revision" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.885:45): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/config" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.885:46): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/revision" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.885:47): apparmor="DENIED" operation="open" profile="firefox" name="/sys/devices/pci0000:00/0000:00:02.0/config" pid=2235 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
[Tue Jan 17 19:14:50 2023] audit: type=1400 audit(1674000890.941:48): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2231/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
这是常规浏览器活动期间生成的附加日志的示例:
[Tue Jan 17 19:16:22 2023] audit: type=1400 audit(1674000983.040:56): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2347/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
[Tue Jan 17 19:16:35 2023] audit: type=1400 audit(1674000995.296:57): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2347/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
[Tue Jan 17 19:16:39 2023] audit: type=1400 audit(1674000999.280:58): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2347/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
[Tue Jan 17 19:16:41 2023] audit: type=1400 audit(1674001001.768:59): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2455/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
[Tue Jan 17 19:16:41 2023] audit: type=1400 audit(1674001001.768:60): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2458/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000
[Tue Jan 17 19:16:41 2023] audit: type=1400 audit(1674001001.768:61): apparmor="DENIED" operation="open" profile="firefox" name="/proc/2461/oom_score_adj" pid=2231 comm="firefox" requested_mask="w" denied_mask="w" fsuid=1000 ouid=1000---
如果我理解正确的话,Firefox 被拒绝对“/sys/devices/”区域的读取访问和对“/proc/”中“oom_score_adj”的读/写访问。有人能解释一下为什么常规浏览器操作需要这种访问吗?如果 AppArmor 规则允许这些尝试,是否会对性能和/或安全性产生潜在的负面影响?我有点困惑,因为我没有注意到旧版 Ubuntu 和 Firefox 有任何类似情况。只要对应用程序的性能没有负面影响,完全抑制这些消息也是一个选择。
我知道这对于应用程序开发人员(Firefox)来说可能是一个更大的问题,但我非常感激任何意见或提示。
答案1
必须向 Firefox Apparmor 配置文件添加附加规则。
编辑/etc/apparmor.d/usr.bin.firefox
并添加:
# allow firefox to adjust its out of memory killer scroe
@{PROC}/[0-9]*/oom_score_adj rw,
# allow firefox to retrieve information about its own cgroups
@{PROC}/[0-9]*/cgroup r,
Firefox 在启动时尝试访问的内容还有很多,但我并不完全确定是否应该允许它们,因此我没有将它们包括在内。允许 oom 分数调整的那个可以让您摆脱大多数日志消息。
如果需要生成 apparmor 规则,请咨询 LLM,并附上错误日志。