2

我正在尝试为名为 test.rb 的 ruby​​ 文件创建 apparmor 配置文件,并将该文件放在 /root 下,test.rb 包含:

#!/usr/bin/env ruby
`mkdir demo`

我通过以下方式创建了apparmor配置文件:

aa-genprof test.rb

上面的命令成功地为那个 test.rb 创建了 apparmor 配置文件,现在我希望这个 test.rb 文件不应该在 /root 目录中创建任何东西,除了读取访问权限。因此,我对 test.rb 文件的 apparmor 配置文件进行了以下更改:

 Last Modified: Mon Sep 29 06:59:34 2014
#include <tunables/global>

/root/test.rb {
  #include <abstractions/base>

  /root/test.rb mr,
  /root/ r,
}

现在我通过以下方式重新启动并重新加载apparmor:

sudo service apparmor restart

所以我假设当我运行我的 test.rb 时不应该在 /root 目录中创建任何目录,但是当我像这样运行这个文件时:

ruby test.rb

它在 /root 中创建演示目录

ls /root
demo

我不明白为什么这会产生这种行为......

4

1 回答 1

2

当您通过 运行程序时ruby test.rb,AppArmor 没有将配置文件附加到进程。你跑了/usr/bin/ruby,没有/root/test.rb

修复很简单:

chmod 755 /root/test.rb
/root/test.rb

谢谢

于 2014-11-20T19:46:13.697 回答