Linuxでapparmor、setrlimit、cap_set_rpocを使用してサンドボックス環境を作成し、匿名ユーザーが科学アプリケーションのコンテキストでサーバー上で基本的に任意のコードを実行できるようにします。サンドボックスで特に許可されていることの1つは、実行可能ファイルをフォークして呼び出すことによって新しいプロセスを開始することです(ただし、1人のユーザーによるプロセスの総数はによって制限されますRLIMIT_NPROC
)。
一定の期間、たとえば1分が経過すると、システムはメインプロセスとすべての潜在的な子を強制終了します。私は現在、子を識別するためにプロセスグループIDに依存しています。ただし、理論的には、子プロセスがそのプロセスグループを変更するために呼び出すことができるため、メインプロセスIDsetpgid
を呼び出したときに影響を受けなくなります(正しいですか?)。残念ながら、プロセスがを呼び出さないように設定できるkill(-1 * pid)
Linuxはありません。capability
setpgid
プロセスとそのすべての(再帰的な)子を殺すための強力な方法は何でしょうか。これにより、子が虐殺を「逃れ」、孤立したプロセスとして続行することが非常に困難になります。