0

在尝试限制我的 Python 应用程序后,我一直在点击这些 AppArmor 消息

[ 1808.635237] audit: type=1400 audit(1600600443.250:50): apparmor="DENIED" operation="exec"
info="no new privs" error=-1 profile="/var/www/localhost/fastcgi/api.py"
name="/usr/bin/python3" pid=5672 comm="api" requested_mask="x" denied_mask="x" fsuid=42 ouid=0

使用此配置文件(由 aa-logprog 生成)

#include <tunables/global>

profile /var/www/localhost/fastcgi/api.py flags=(attach_disconnected) {
  #include <abstractions/base>

  # Python:
  /usr/bin/python3{,.[7-9]} Cx,

  ^/usr/bin/python3{,.[7-9]} flags=(attach_disconnected) {
    #include <abstractions/base>

    /usr/bin/python3{,.[7-9]} mr,
  }
}

Api是系统服务。读完这篇文章后,我注意到api.service确实已经NoNewPrivileges=yes设置好了。因此,我将其更改为NoNewPrivileges=no(并重新加载了服务),但这并没有改变任何事情。行为仍然完全相同。

是的,一旦任务没有新的权限,就不允许更改其配置文件并可能增加其权限。有一个例外是不受限制的状态,因为任何配置文件转换都是特权的减少。因此,在 ix 时刻(继承当前限制)和堆叠,您剩下两个潜在的转换。堆叠可能不是您想要的,因为它保留了当前的限制并在顶部添加了额外的限制。

知道还有什么原因info="no new privs"吗?

4

1 回答 1

0

找到了!

https://github.com/systemd/systemd/issues/18914

ProtectHostname=yes 似乎暗示 NoNewPrivileges=yes

于 2021-05-27T16:14:04.400 回答