使用AppArmor创buildLinux“沙箱”

我正在尝试对特定的Python进程进行沙盒处理,只允许其访问networking通信和文件系统上的一定数量的文件。 我遵循Ubuntu社区文档站点和Chromium项目沙盒上的文章 。

但是,我只想阻止一些Python进程。 为了解决这个问题,我已经将Python可执行文件链接到另一个位置(称为python sandbox ),并将AppArmorconfiguration文件应用到它。

当我启动python-sandbox ,我仍然可以打开文件系统上的任意文件并从中读取。 怎么了? 我做了以下:

创build一个AppArmorconfiguration文件,如下所示:

 #include <tunables/global> /opt/python-sandbox { #include <abstractions/base> #include <abstractions/fonts> /proc/** r, /usr/lib/python2.7/** r, /usr/local/lib/python2.7/** r, network, } 

复制到/etc/apparmor.d/目录中,名称为opt.python-sandbox (因为符号链接是/opt/python-sandbox

运行apparmor_parser /etc/apparmor.d/opt.python-sandbox

我做错什么了吗? 我应该考虑另一种方法吗?

啊哈! 我错过了什么。 显然,AppArmor在一般的符号链接上不起作用。 将Python可执行文件复制到/ opt / python-sandbox中工作正常。