0

私は spoj.pl のようなオンライン コーディング ジュード サイトを作成しており、プログラムをコンパイルして実行するための刑務所を作成しています。私は、c/c++ ソース コードを取得し、コードをコンパイルして実行するスクリプトを作成しました。debootstrap によって作成された監獄でこのプログラムを実行する必要がありますが、スクリプトへのアクセス許可を制限し、バイナリが元の /home/ubuntu システムに存在する入力/出力ファイルのみを読み取れるようにする必要があります。

出来ますか ?

Linux system:
/home/ubuntu:
   This folder has 
   online_judge/scripts.py ...
   input_output/input*.txt,output*.txt

/Jail 
    submissions/code.c
    submissions/code.cpp

制限された刑務所ユーザーで刑務所内の /home/ubuntu の scripts.py を呼び出し、コードをコンパイルしてバイナリを実行する必要があります。Jail ユーザーは、input_output/input*txt を除いて、/home/ubuntu ファイルのいずれにもアクセスできないようにする必要があります。

4

2 に答える 2

0

必要なコンパイル ツールチェーンをダウンロードできる debootstrap を使用する必要があります。そのため、既存のシステム ツールチェーンを使用する代わりに、debootstrap が提供するツールチェーンを使用するか、刑務所内から apt-get を介してツールチェーンをダウンロードすることもできます。すべてが失敗した場合は、scratchbox (www.scratchbox.org) を使用してみてください。これには、必要なすべてのコンパイル ツールチェーンと実行環境が含まれています。それが役立つことを願っています!

于 2013-08-11T06:52:44.033 に答える
0

/home/ubuntu の scripts.py を、jail ユーザーを制限して、jail で呼び出す必要があります。

scripts.py は /home/ubuntu/online_judge にあり、/Jail にはありません。したがって、jail ユーザーを /Jail に制限するかどうかのどちらかです。制限付きの jail ユーザーが online_judge/scripts.py を実行する必要がある場合は、/Jail の下のどこかでアクセスできるようにする必要があります。

Jail ユーザーは、input_output/input*txt を除いて、/home/ubuntu ファイルのいずれにもアクセスできないようにする必要があります。

「ln /home/ubuntu/online_judge/scripts.py /Jail/scripts.py」などのハードリンクが役立つ場合があります。これで、制限付きの jail ユーザーが /Jail/scripts.py 経由で scripts.py にアクセスできるようになりました。そのファイルへの書き込みアクセスを必ず制限してください。そうしないと、両方の「コピー」が変更されます。

于 2013-08-11T00:20:42.897 に答える