我正在尝试对特定的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中工作正常。