在受限环境中运行外部代码(linux)

时间:2009-12-07 19:18:52

标签: linux rhel

由于超出本文范围的原因,我想运行类似于computer language benchmark game的外部(用户提交的)代码。显然,这需要在受限制的环境中完成。以下是我的限制要求:

  1. 只能读/写当前工作目录(将是大tempdir)
  2. 无外部访问(互联网等)
  3. 我可能不关心的任何其他事项(例如,处理器/内存使用等)。

    我自己有几个限制。使用标准* nix功能(特别是RHEL 5.x)的解决方案将是首选,因为我可以将我们的群集用于后端。在那里安装软件也很困难,因此基本分发中的某些内容将是最佳的。

    现在,问题:

    1. 这可以用外部编译的二进制文件完成吗?这似乎有可能,但也可能只是没有希望。
    2. 如果我们强制提交代码本身并自行编译,那该怎么办?这会使问题变得更容易还是更难?
    3. 我应该放弃主目录保护,还是使用VM / rollback?阻止外部通信(通常是通过桥接LAN连接与VM通信?)
    4. 我错过了哪些东西?
    5. 可能有用的想法:

      1. rssh。虽然
      2. 没有帮助编译代码
      3. 代码完成后使用具有回滚的VM(可以配置网络,以便有本地网桥但没有WAN网桥?)。不适用于群集。

2 个答案:

答案 0 :(得分:1)

我会检查并评估VM和特殊的SELinux上下文。

答案 1 :(得分:0)

我认为您无法通过简单的文件系统保护来完成所需的操作,因为您将无法阻止访问允许访问网络等的系统调用。您可以使用{{ 3}}做你需要的东西。它使用内核并虚拟化外部二进制文件。