沙盒公开可访问GCC

Sandboxing Publicly Accessible GCC

本文关键字:访问 GCC      更新时间:2023-10-16

我想为基于linux的web服务添加一个功能,该功能允许不受信任的用户将源代码上传到一个小型C++程序,并将该代码自动保存到服务器上的一个文件中,使用gcc进行编译,然后执行,捕获标准输出。(这与ideone.com、spoj.pl、topcoder.com或许多其他网站没有什么不同。)

我的问题是:

Q1.如何对可执行文件进行沙盒处理,以防止恶意用户试图破坏文件系统或访问网络等?

Q2.是否有一种公平/准确的方式将系统资源分配给进程,例如处理器时间和内存使用情况?

  1. chroot监狱
  2. ulimit
  3. 通过您正在运行的uid将kernel so socket()修补为失败