我使用 Jython 和 java 安全策略编写了一个用于运行受限制的 python 脚本的 python-沙箱。为了授予权限,我定义了一个这样的策略文件:
grant {
permission java.io.FilePermission "Lib\\-", "read";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getProtectionDomain";
};
例如,在任何 python 脚本中导入 os.py 模块都需要从 jython.jar 的“Lib”文件夹读取的 FilePermission。
因此 jython 有权使用 egos.mkdir("Dir")
或os.getpid()
,因为“os.py”模块位于 jython.jar Lib 文件夹中。
如何授予更具体的权限,例如 python 脚本有权运行os.getpid()
但没有os.mkdir("Dir")
?