2

ユーザーが次のようなコードでLinuxマシンをロックするのを防ぐ方法はありますか?

#import <stdio.h>
int main (int argc, char** argv)
{
    while (1)
        fork();
}

問題のコンピューターはコンピューターラボにあるので、コンパイルを完全に禁止することはできません...しかし、そのようなプロセスがシステムリソースの特定の部分のみを消費するようにする方法はありますか?この問題の重要性は、すべてのユーザーが任意のシステムにSSHで接続できるという事実によってさらに複雑になります。したがって、これがまだ問題になっていない唯一の理由は、ほとんどのユーザーが多かれ少なかれCやその他の低水準言語に慣れていないことです。 。

それでも、これをつぼみに挟みたい...

4

2 に答える 2

11

各ユーザーが作成できる並行プロセスの総数を制限できます。私はそれが入っていると思います、/etc/security/limits.confそしてNPROCフィールドはあなたが設定する必要があるものです。

更新:ここで調べたところ、私の記憶は結局私を失敗させていないようです:-)

最も簡単な方法は、次のように入力することです。

* hard nproc 50

これにより、すべてのユーザーが50プロセスに制限されます。それよりももう少しきめ細かい制御が必要になる場合があります。

または、システムで使用できないulimit場合は、を使用して制限を適用limits.confできます。開始されたすべてのプロセスが、たとえば、/etc/profile他のすべての可能なエントリポイントに配置することによって制限されていることを確認する必要があります。

ulimit -Hu 50
于 2009-12-31T02:24:26.673 に答える
6

ウィキペディアのフォーク爆弾のセクション「予防」を参照してください。

于 2009-12-31T02:25:24.770 に答える