为了防止叉子炸弹我遵循了这个http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm
ulimit -a
反映了新的设置,但当我运行时(如root
中所示bash
),:(){ :|:&};:
VM 仍然使用最大 CPU+RAM 并且系统将冻结。
如何确保用户不会因使用fork炸弹或运行有缺陷的应用程序而导致系统瘫痪?
操作系统:RHEL 6.4
答案1
为了使此更改普遍存在,您需要将这些限制添加到整个环境中。使用该命令的更改ulimit
仅针对当前环境。
笔记:这对 root 用户没有影响!
例子
编辑此文件:并向该文件添加条目,限制允许特定用户或用户组拥有的vi /etc/security/limits.conf
进程数 ( )。nproc
vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200
笔记:该文件中有更多示例。使用“all”(又名。*
)时要小心,这也会限制系统帐户。
参考
答案2
超级用户或任何具有 CAP_SYS_ADMIN 或 CAP_SYS_RESOURCE 功能的进程不受该限制的影响,这是无法更改的。root
总是可以分叉进程。
如果某些软件不受信任,则无论如何它都不应运行root
。