【问题标题】:Running external code in a restricted environment (linux)在受限环境中运行外部代码 (linux)
【发布时间】:2009-12-07 19:18:51
【问题描述】:

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

  1. 只能读取/写入当前工作目录(将是大 tempdir)
  2. 没有外部访问(互联网等)

我可能不关心的其他任何事情(例如,处理器/内存使用情况等)。

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

现在,问题:

  1. 这甚至可以用外部编译的二进制文件来完成吗?这似乎是可能的,但也可能只是没有希望。
  2. 如果我们强制提交代码本身并自己编译会怎样。这会让问题变得更容易还是更难?
  3. 我是否应该放弃主目录保护并使用 VM/回滚?阻止外部通信怎么样(VM 不是通常通过桥接 LAN 连接进行通信吗?)
  4. 我错过了什么?

可能有用的想法:

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

【问题讨论】:

标签: linux rhel


【解决方案1】:

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

【讨论】:

【解决方案2】:

我认为您无法通过简单的文件系统保护来做您需要的事情,因为您将无法阻止对允许访问网络等的系统调用的访问。您可能可以使用 @987654321 @ 做你需要的。它使用内核并虚拟化外部二进制文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多