如何预防叉子炸弹?


14

为了防止叉子炸弹,我遵循了此http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm

ulimit -a体现了新的设置,但是当我运行(如rootbash:(){ :|:&};:的虚拟机仍继续最大CPU +内存,系统将冻结。

如何确保使用叉炸弹或运行有问题的应用程序不会使用户瘫痪?

作业系统:RHEL 6.4


我不能在这里复制它。您是否root有机会尝试一下?您从哪个外壳尝试?({提示后缺少空格,zsh但我也无法在那里复制它)。
斯特凡Chazelas

Stephane Chazelas:1]我以root身份运行,我以正常用户运行过。2]缺少的空格是拼写错误,我正在使用bash。对不起。3] ulimit是否不能管理“ root”用户?
user44441 2013年

@ stephane-chazelas 1]我以root身份运行,我以正常用户尝试过它的工作原理。2]缺少的空格是拼写错误,我正在使用bash。对不起。3] ulimit是否不能管理“ root”用户?
user44441 2013年

Answers:


8

超级用户或具有CAP_SYS_ADMIN或CAP_SYS_RESOURCE功能的任何进程都不受该限制的影响,这是不能更改的。root总是可以分叉进程。

如果某些软件不受信任,则root无论如何都不应运行。


3
除非它做了一些特殊的事情,否则无论如何几乎没有任何内容应以root用户身份运行。root是您在厌倦了试图找出需要哪些特权/权利或一些基本系统服务时使用的帐户。
布莱奇利2013年

11

要使此更改无处不在,您需要将这些限制添加到整个环境中。使用该ulimit命令所做的更改仅适用于当前环境。

注意:这将对root用户无效!

编辑此文件:vi /etc/security/limits.conf并在文件中添加条目,以限制nproc允许特定用户或一组用户使用的进程数()。

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

注意:该文件中还有更多示例。使用“全部”(也称为*)时要小心,这也会限制系统帐户。

参考文献


尽管“全部”将限制系统帐户,但是那些系统帐户运行的大多数服务都不会通过pam_limits
jordanm

是ulimit不能管理“ root”用户吗?
2013年

就像在帖子中添加更多内容的一般想法一样,您可能希望在帖子中添加一些有关pam_cgroup的信息,因为OP的平台支持它,并且pam_limits一旦cgroup得到广泛采用,最终将被该内容所取代。
布莱奇利2013年

另外,由于听起来OP正在使用资源使用策略,因此cgroups可以为它们提供更好的网络和CPU利用率旋钮。
布莱奇利2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.