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

Protect website files on linux hosting server

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

问题是:

The executed user's program will have all the owner permissions (read - write -execute).

所以如果用户的代码是这样的:

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

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

问题是:

how to protect my website files from user's executed programs, and give it limited permissions.

备注

I have only one user on the linux server (the owner), and i can't create a new user in the server.

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

我觉得你的需求类似于实现一个Online-judge系统,你可以在GitHub上搜索"online judge"。示例 judge

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