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

参见 Wikipedia on Fork Bomb的“预防”部分。

于 2009-12-31T02:25:24.770 回答