我正在创建一个工具,它可以运行我的学生上传的程序并测试他们的编程课作业。
他们的程序从标准输入读取数据,进行一些计算,然后写入标准输出。仅此而已。每个程序都由一个可执行文件组成。
我该如何阻止他们的程序对我的系统进行任何恶意的操作?
我想使用linux。
编辑:我既不信任我的学生也不信任我自己的服务器。我的服务器上可能有一些权限为 777 的文件,我不希望学生阅读。我相信我可以使用 chroot 命令来阻止对文件的访问。但我如何才能阻止对网络和互联网等的访问呢?
答案1
你有几个选择,这实际上是在时间/精力与你对学生的不信任程度之间取得平衡。
最安全的方法是运行虚拟 Linux 机器,但如果该机器的唯一用途是测试平台,那么可能没有必要。
如果您对其余文件拥有正确的权限,您只需将用户设置为“学生”,并为他们提供一个他们有权限的目录即可。他们无权编辑任何系统文件,并且任何具有潜在破坏性的工具(如 gparted)都需要 sudo(请勿将它们包含在 sudoers 中)。