我想为一个在线评委项目执行代码。
我找不到libsandbox的 Python 包装器的文档, 我找到了 sample2.py 和一些测试用例,但没有解释。
创建沙盒时的默认设置是什么?默认情况下是否安全?
我想执行不受信任的代码 - 限制 CPU - 限制内存 - 限制执行时间 - 只允许对特定文件夹进行读/写访问并限制此文件夹的大小。- 阻止网络 IO。- 阻止执行其他程序。
这段代码结合了我发现的两个例子:
cookbook = {
'args': args[1:], # targeted program
'stdin': sys.stdin, # input to targeted program
'stdout': sys.stdout, # output from targeted program
'stderr': sys.stderr, # error from targeted program
'jail': './foo',
'owner': 'nobody',
'quota': dict(wallclock = 30000,# 30 sec
cpu = 2000, # 2 sec
memory = 8388608, # 8 MB
disk = 1048576)} # 1 MB
# create a sandbox instance and execute till end
s = Sandbox(**cookbook)
s.run()
s.result == S_RESULT_OK
磁盘配额限制是什么?它是否限制了脚本在此运行中可以写入的总字节数或文件夹的大小?将所有者设置为没人有什么作用?我的示例中的代码会阻止执行任意代码、阻止网络 IO 并阻止访问被监禁文件夹之外的文件吗?
谢谢