Linux - コンテナなしで隔離されたプロセス

Linux - コンテナなしで隔離されたプロセス

私はオンライン審判システムを備えたシステムを構築しています。すべての実行可能ファイルを実行し、出力を評価する必要があります。問題は、すべてを1つのコンテナ、別のフォルダに配置すると、アプリケーションの1つがそのフォルダを終了し、別のアプリケーションに属する別のフォルダにアクセスしようとすることができることです。この場合、メインサーバーは保護されますが、他のアプリケーションや評価者は保護されません。

私だけの解決策を見つけましたが、より良い解決策があると思います。たとえば、5つのコンテナを作成し、各コンテナは同じアルゴリズムを実行し、各コンテナは一度に1つの問題を評価します。質問が評価された後は削除され、他の質問が受け付けられます。この場合、マスターサーバーとすべてのアプリケーションは保護されますが、評価者は保護されません。評価されたアプリケーションは、そのフォルダを終了し、任意のテキストファイルの書き込みを開始できます(たとえば、メモリ全体を埋めるなど)。

評価者は実行ファイルを起動し、実行時間(1〜2秒以上かかると終了)と使用するメモリ(特定の制限に達すると終了)を測定します。

私は毎回コンテナを作成し、実行可能ファイルを評価して削除するかどうかを考えましたが、コンテナの作成と起動には数秒しかかかりません。

コンテナと評価者から評価プロセスを分離する方法は?基本的に、あるプロセスが別のフォルダにアクセスするのを防ぎたいと思います。

ベストアンサー1

お客様の問題の説明から、お客様のアプリケーションに対して別のユーザー アカウントを作成するのを妨げる内容を読み取ることができませんでした。その後、単純なファイル権限を使用して干渉を防ぐことができます。

chown app1 /var/lib/myapps/app1
chmod 700 /var/lib/myapps/app1
sudo -u app1 /var/lib/myapps/app1/run.sh

編集する

評価者が実行している場合は、rootアプリケーションを起動して簡単に実行できますsudo

評価者が実行されていない場合は、プロセスrootが評価者プロセスではなくバイナリを所有しているユーザーとして実行されるように、通常の方法で呼び出すアプリケーションをSUIDビット(ユーザーID設定)と共にインストールできます。 。

おすすめ記事