我希望自动测试用户的源代码文件,让他们将c ++,python,lisp,scala等文件上传到我的linux机器,服务器会在文件夹中找到它们然后编译/运行它们验证它们是否正确。此服务器不包含任何关于我的任何用户的重要信息,因此没有数据库或任何人可以破解。但我不是安全专家所以我仍然担心用户会以某种方式找到一种方法来运行具有root权限的任意命令(基本上我不知道哪种类型的东西可能出错)。有安全的方法吗?
答案 0 :(得分:1)
在Linux中阅读有关chroot命令的更多信息。
这样,您可以为每个正在运行的用户程序提供单独的隔离容器。
答案 1 :(得分:1)
他们会的。如果你给某人编译的权力,那么很难不升级到root。你说服务器对你来说并不重要,但如果有人从你的服务器发送电子邮件,或者改变一些脚本,在家用机器或你使用的其他服务器上获取一些信息呢?
至少你需要强烈地将它们与它们分开。我建议使用linux容器,https://linuxcontainers.org/这些时候它们很流行。但要小心,无论你保护多少,这都是危险的服务。
答案 2 :(得分:0)
在任何情况下都不允许用户使用root权限在您的服务器上运行代码。然后,用户可以运行rm –rf /
,它将删除服务器上的所有内容。
我建议您创建一个权限非常有限的新本地用户/组,例如只能访问一个文件夹。因此,当您在服务器上运行代码时,您将在该文件夹中运行该代码,并且用户无法访问其他任何内容。代码完成后,删除文件夹的内容。你还应该大力测试一下,检查它们是否真的无法破坏/操纵任何东西。
如果您在FreeBSD上运行,您还可以查看Jails,这是一种虚拟化方式,并将用户/程序限制在该沙箱中。