AppArmor 配置文件中的“ptrace(trace)peer=”是什么意思?

AppArmor 配置文件中的“ptrace(trace)peer=”是什么意思?

我一直在写一些 AppArmor 配置文件对于每个新的配置文件,我都会遇到以前从未见过的更高级的规则。

在本例中,我正在为 PulseAudio 创建配置文件。我也有一个 SMPlayer 的配置文件,但是当我创建 PulseAudio 配置文件时,当我想在 SMPlayer 中观看某些电影时,AppArmor 对我说了这样的话:

kernel: audit: type=1400 audit(1505370398.880:1005): apparmor="DENIED" operation="capable" profile="/usr/bin/smplayer" pid=40033 comm="pacmd" capability=19  capname="sys_ptrace"
Sep 14 08:26:38 morfikownia kernel: audit: type=1400 audit(1505370398.880:1006): apparmor="DENIED" operation="ptrace" profile="/usr/bin/smplayer" pid=40033 comm="pacmd" peer="/usr/bin/pulseaudio"

可以通过添加以下内容来修复此问题到 SMPlayer 配置文件

  capability sys_ptrace,
  ptrace (trace) peer=/usr/bin/pulseaudio,

但我对此有两个问题:

  1. 为什么SMPlayer现在需要规则?我有它的配置文件有一段时间了,SMPlayer 从来没有询问过规则。我知道这是因为为 PulseAudio 创建了配置文件,但有人能解释为什么吗?

  2. 这些规则的实际含义是什么?如果我不添加它们会发生什么? SMPlayer 似乎在没有 CAP 和ptrace规则的情况下工作得很好。

答案1

AppArmor文档跟踪规则在他们的维基中。阅读肯定文件中的文件/proc/<pid>可能会导致日志中出现跟踪请求拒绝消息。

从您的日志摘录看来,pulseaudio(comm=pacmd,profile /usr/bin/pulseaudio)被拒绝访问,而生成的规则将允许访问(我对pulseaudio的详细信息不够熟悉,无法回答为什么会发生这种情况)。如果您最近为pulseaudio启用了AppArmor配置文件,这将解释为什么您之前没有收到此审核消息。

如果您没有(或注意到)任何问题,则无需允许访问。要阻止 AppArmor 填充您的日志,您可以创建一个否认规则。拒绝规则拒绝的访问不会在日志中生成消息:

deny ptrace (trace) peer=/usr/bin/pulseaudio,

但是,如果您决定允许访问,则应首先检查仅授予是否ptrace (trace) peer=/usr/bin/pulseaudio足够。添加capability sys_ptrace添加一个能力规则对于 SMPlayer,这很可能不是必需的。

相关内容