2016-01-20 69 views
-1

l有一个网站托管在Linux服务器上,并且我的根目录是(/ home/MyAccountName)。 我的网站允许用户上传那里的C++/c代码,编译并执行它。保护Linux主机服务器上的网站文件

的问题是:

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

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

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

执行时,我所有的网站文件将被删除形式的服务器。

的问题是:

如何保护用户执行的程序我的网站文件,并给它有限的权限。

注意

我有Linux服务器(所有者)上只有一个用户,我不能在服务器中创建一个新用户。

+0

标题不可能理解。 –

+0

一般警告:让用户在服务器上执行任意代码是一个非常糟糕的主意,除非您确切知道自己在做什么,否则不应该这样做。 – fuz

+0

这是关于服务器管理,而不是编程,因此在堆栈溢出问题上是无关紧要的。 – Olaf

回答

1

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

0

我认为您的需求与实现在线评判系统类似,您可以在GitHub上搜索“在线评委”。示例judge

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