オンライン審査プロジェクトのコードを実行したいと考えています。
libsandboxの Python ラッパーのドキュメントが見つかりませんでした 。sample2.py といくつかのテスト ケースを見つけましたが、説明はありませんでした。
サンドボックスを作成するときのデフォルトは何ですか? デフォルトで安全ですか?
信頼できないコードを実行したい - CPU を制限する - メモリを制限する - 実行時間を制限する - 特定のフォルダーへの読み取り/書き込みアクセスのみを許可し、このフォルダーのサイズを制限する。- ネットワーク IO をブロックします。- 他のプログラムの実行をブロックします。
このコードは、私が見つけた 2 つの例を組み合わせたものです。
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
クォータ内のディスクは何を制限しますか? この実行でスクリプトが書き込むことができる合計バイト数またはフォルダーのサイズを制限しますか? 所有者を nobody に設定するとどうなりますか? 私の例のコードは、任意のコードの実行をブロックし、ネットワーク IO をブロックし、jailed フォルダー外のファイルへのアクセスをブロックしますか?
ありがとう