2014-10-28 56 views
0

我想通过让我们的用户的源代码文件上传C++,python,lisp,scala等文件到我的linux机器上来自动化测试,他们在一个文件夹中,然后编译/运行它们来验证它们是否正确。此服务器不包含任何有关我的用户的重要信息,因此没有任何数据库或任何其他人可以进行破解。但我并不是安全专家,所以我仍然担心用户以某种方式寻找以root权限运行任意命令的方式(基本上我不知道哪些事情会出错)。有没有安全的方法来做到这一点?如何让用户在我的服务器上运行任意源代码

+1

saas version at http://ideone.com/ – tom 2014-10-28 22:17:31

+1

你会想做某种沙箱/虚拟化,但我不知道该怎么做。我认为http://serverfault.com的人可能会更好地回答 – 2014-10-28 22:18:24

+1

或http://security.stackexchange.com/ – ErlVolton 2014-10-28 22:18:43

回答

1

他们会。如果你赋予某人编译的权力,那么很难而不是升级到根目录。你说那个服务器对你来说并不重要,但如果有人向你发送一封来自该服务器的电子邮件,或者改变了一些脚本,在你的家用机器或者你使用的另一台服务器上获得了一些信息呢?

至少你需要强烈地将你与他们分开。我建议linux容器,https://linuxcontainers.org/这些日子他们是时髦的。但要小心,无论你保护多少,这都是危险的服务。

0

在任何情况下,您都不应允许用户使用root权限在您的服务器上运行代码。然后用户可以运行rm –rf /,它会删除服务器上的所有内容。

我建议您创建一个新的本地用户/组,其权限非常有限,例如只能访问一个文件夹。因此,当您在服务器上运行代码时,您将在该文件夹中运行该代码,并且用户无法访问其他任何内容。代码完成后,您将删除该文件夹的内容。你还应该大力测试它们是否确实无法销毁/操纵任何东西。

如果你在FreeBSD上运行,你也可以看看Jail,这是一种虚拟化方式,并将用户/程序限制在该沙箱中。

1

在Linux中阅读有关chroot命令的更多信息。

通过这种方式,您可以为每个正在运行的用户程序提供单独的独立容器。

相关问题