2012-03-22 6 views
1

信頼できるユーザーがソースコードを小さなC++プログラムにアップロードし、そのコードをサーバー上のファイルに自動的に保存する機能をLinuxベースのWebサービスに追加したいgccでコンパイルして実行し、標準出力をキャプチャします。 (これはideone.com、またはspoj.pl、またはtopcoder.com、またはcodechef.com、またはこれを行う他のウェブサイトの多くとは異なり、機能ではありません)Sandboxing Publicly Accessible GCC

私の質問は以下のとおりです。

Q1 。ファイルシステムを破損させたり、ネットワークにアクセスしようとする悪意のあるユーザーを守るために、実行可能ファイルをサンドボックス化するにはどうすればいいですか?

Q2。プロセッサの時間やメモリの使用量など、プロセスにシステムリソースを浪費する公正で正確な方法がありますか?

+0

なぜdownvoteですか?もしあなたがコメントを残すよりもdownvoteするつもりです。 –

+0

これはもっと管理上の質問です。 http://serverfault.com/コミュニティにお問い合わせください。 –

+0

@Tom Kerr:プログラミングの解決策が必要であることが判明しました。 – Joshua

答えて

1
  1. chroot監獄UIDで
  2. のulimit
  3. パッチカーネルソケットので、()が失敗したとして、これを実行しています。
+0

あなたのプライベートなデータとネットワークから手を離してください。そして必然的に損なわれたときにそれを稼働させるための迅速な復旧計画をまとめてください。おそらく気にしないでください。コンパイラは本当に、実際には安全であるようには設計されていません。 – ams

+0

だから、拘束されたユーザーとしてコンパイラを実行するのです – Joshua

+0

カーネルにパッチを当てる必要はありません。実際のものの前にスタブlibcをリンクし、そのスタブライブラリで 'socket'をnopにすることで十分です。しかし、 'syscall'のようにもう少しスタブする必要があります。 – MSalters