Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
沙箱公开访问GCC 我想向Linux的Web服务添加一个特性,允许不信任的用户将源代码上传到一个小型C++程序,并将该代码自动保存到服务器上的文件并用GCC编译,然后执行,捕获标准输出。(这是一项与ideone.com、spoj.pl、topcoder.com、codechef.com或许多其他网站类似的功能。)_C++_Linux_Gcc_Network Security - Fatal编程技术网

沙箱公开访问GCC 我想向Linux的Web服务添加一个特性,允许不信任的用户将源代码上传到一个小型C++程序,并将该代码自动保存到服务器上的文件并用GCC编译,然后执行,捕获标准输出。(这是一项与ideone.com、spoj.pl、topcoder.com、codechef.com或许多其他网站类似的功能。)

沙箱公开访问GCC 我想向Linux的Web服务添加一个特性,允许不信任的用户将源代码上传到一个小型C++程序,并将该代码自动保存到服务器上的文件并用GCC编译,然后执行,捕获标准输出。(这是一项与ideone.com、spoj.pl、topcoder.com、codechef.com或许多其他网站类似的功能。),c++,linux,gcc,network-security,C++,Linux,Gcc,Network Security,我的问题是: 问题1。如何对可执行文件进行沙箱处理,以防止恶意用户试图破坏文件系统或访问网络等 问题2。是否有一种公平/准确的方法来对进程的系统资源进行rashoning,例如处理器时间和内存使用 克鲁特监狱 乌利米特 通过运行此操作的uid修补内核so套接字()失败 克鲁特监狱 乌利米特 通过运行此操作的uid修补内核so套接字()失败 为什么要投否决票?如果你打算投反对票,请留下评论。这更像是一个管理问题。你可能想问问社区。@Tom Kerr:结果是需要一个编程解决方案。@Joshua Ya

我的问题是:

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

问题2。是否有一种公平/准确的方法来对进程的系统资源进行rashoning,例如处理器时间和内存使用

  • 克鲁特监狱
  • 乌利米特
  • 通过运行此操作的uid修补内核so套接字()失败
  • 克鲁特监狱
  • 乌利米特
  • 通过运行此操作的uid修补内核so套接字()失败


  • 为什么要投否决票?如果你打算投反对票,请留下评论。这更像是一个管理问题。你可能想问问社区。@Tom Kerr:结果是需要一个编程解决方案。@Joshua Yah,看起来是这样。我认为chroot和所有这些对他们来说都是合适的。我想他们至少能告诉你他们能做什么,所以你没有重新发明轮子。为什么要投反对票?如果你打算投反对票,请留下评论。这更像是一个管理问题。你可能想问问社区。@Tom Kerr:结果是需要一个编程解决方案。@Joshua Yah,看起来是这样。我认为chroot和所有这些对他们来说都是合适的。我想他们至少能告诉你他们能做些什么,这样你就不用再发明轮子了。而且把机器放在你的私人数据和网络够不着的地方。并制定了一些快速恢复方案,以便在不可避免地受到损害时启动并运行它。也许不用麻烦了。编译器真的,真的不是为了安全而设计的。这就是为什么你以被监禁用户的身份运行编译器,你不需要修补内核。在真正的存根libc之前链接存根libc,并在存根库中创建一个nop就足够了。但是您还需要再存根一些,例如
    syscall
    @MSalters,所有这些都不能阻止用户手动调用syscalls。这就是Joshua建议修补内核的原因。@ams:你能澄清一下怎么做吗?如果编译器将
    syscall(0)
    转换为
    (void)(0)
    ,那么执行结果将不会到达内核。没有“手动”方式进行系统调用;您只执行编译器输出,与一组固定的库相链接。(您可能不应该把
    作为
    的汇编程序放在chroot监狱中),并将机器放在您的私人数据和网络够不着的地方。并制定了一些快速恢复方案,以便在不可避免地受到损害时启动并运行它。也许不用麻烦了。编译器真的,真的不是为了安全而设计的。这就是为什么你以被监禁用户的身份运行编译器,你不需要修补内核。在真正的存根libc之前链接存根libc,并在存根库中创建一个nop就足够了。但是您还需要再存根一些,例如
    syscall
    @MSalters,所有这些都不能阻止用户手动调用syscalls。这就是Joshua建议修补内核的原因。@ams:你能澄清一下怎么做吗?如果编译器将
    syscall(0)
    转换为
    (void)(0)
    ,那么执行结果将不会到达内核。没有“手动”方式进行系统调用;您只执行编译器输出,与一组固定的库相链接。(您可能不应该在chroot监狱中拥有
    作为
    的汇编程序)