我想,我处于相当普遍的状况。我是一名新手老师,我必须教我的学生学习C语言的基础知识。检查他们的作业需要花费很多时间,我想知道如何自动化这个过程。我决定使用我的电子邮件地址来达到这个目的。基本上,我想写一个脚本(并把它放在cron中),检查我的电子邮件地址,以获取学生的新消息,下载附件(每个学生都有自己的目录,存储源代码的地方),编译它们,运行一些测试,然后将结果发回给学生。问题在于有人可以向我发送包含 system(“rm -rf ../..");等命令的程序。我想阻止运行这些命令。但是应允许学生修改自己目录中的文件,并使用来自不同目录的测试数据读取文件。有没有一种简单而安全的方法来实现这一目标?如果有可能,你能提供一些例子吗?
我知道我不是第一个在这里提出这个问题的人,但我能找到的所有答案都不清楚,并在几年前发布过。人们通常建议使用 chroot jail ,但这种方法需要root权限,据我所知,这是不安全的,因为它很容易打破监狱。我也读过 strace ,但它将所有系统调用打印到stdin。是否可以禁止某些系统调用或使用strace停止程序?
感谢您的耐心等待。
答案 0 :(得分:0)
在运行学生之前设置测试VM并对其进行镜像。 VM内的代码。
使用镜像从任何灾难中恢复。
此外,您可以在每晚,每周等自动编辑VM(从镜像中)重新初始化脚本。
答案 1 :(得分:0)
不确定您使用的是哪种Linux版本,但是您是否尝试过查看fakechroot?它的工作原理是创建一个shim库,它拦截某些系统调用,并允许非root用户使用chroot。好像它可能适合你。如果由于某种原因这不合适,您可以考虑使用LXC或docker等容器系统。
答案 2 :(得分:-1)
也许你可以使用
来观察导出的符号nm
它将显示使用prorgram导出的每个函数,然后如果导出系统或任何其他未经授权的函数,您将在不执行程序的情况下看到它。