保护linux托管服务器上的网站文件

时间:2016-01-20 13:58:52

标签: c linux permissions web hosting

我有一个托管在linux服务器上的网站,我的根是(/ home / MyAccountName)。 我的网站允许用户上传c ++ / c代码,编译并执行它。

问题是:

  

已执行用户的程序将拥有所有所有者权限(读写 - 执行)。

所以,如果用户的代码如下:

system('cd / && rm -r MyAccountName');

执行时,我的所有网站文件都将从服务器中删除。

问题是:

  

如何保护我的网站文件免受用户执行的程序的侵害,并赋予其有限的权限。

注意

  

我在linux服务器(所有者)上只有一个用户,我无法在服务器中创建新用户。

2 个答案:

答案 0 :(得分:1)

standrard解决方案是在一些chroot甚至容器中执行他们的代码。您可以修改您的网站以创建临时目录,chroot到它并执行用户代码,这样用户就无法与您的文件或系统的其他部分进行交互。如果用户代码可能与某些共享库链接,则可以提供只读访问权限,可以使用mount --bind完成,以使主文件系统的某些部分在chroot内可用。

答案 1 :(得分:0)

我认为您的需求类似于实施在线评判系统,您可以搜索"在线评判"在GitHub上。示例judge

也许你可以研究Sandbox这是一种分离正在运行的程序的安全机制。