我正在尝试对某个 Python 进程进行沙盒处理,使其仅能访问网络通信和文件系统上的选定数量的文件。我按照Ubuntu 社区文档网站以及 Chromium 项目的关于沙盒的文章。
但是,我只想阻止一些 Python 进程。为了解决这个问题,我将 Python 可执行文件符号链接到另一个位置(称为python sandbox
),并对其应用 AppArmor 配置文件。
当我启动时python-sandbox
,我仍然能够打开文件系统上的任意文件并读取它们。出了什么问题?我做了以下操作:
创建 AppArmor 配置文件如下:
#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
。
我做错了什么吗?我应该考虑其他方法吗?
答案1
啊哈!我漏掉了一些东西。显然大家都知道 AppArmor 通常不适用于符号链接。将 Python 可执行文件复制到 /opt/python-sandbox 没问题。