linux沙箱
概述
以前一直在刷OJ时,一直在想oline judge是怎么实现的。输入和输出数据都很好办,时间控制也简单。但是怎么保证内存在一定范围内,而且代码不会做出什么危险动作,添加删除磁盘文件,执行bash操作,进行网络操作等等。
噢噢,后来我才发现,linux中的沙箱技术就是专门做这个的。
- 使用setuid,设置用户程序的uid,来将用户权限缩小到一个可控的范围。但无法监控内存使用情况
- AppArmor。超级完善与细化的沙箱机制,http://www.cnblogs.com/-Lei/archive/2013/02/24/2923947.html。
- Docker。相当于使用虚拟机来跑程序了,这个也是可以监控的。