我偶然发现了这个页面,无法理解这是如何工作的.
此命令"指数生成子进程,直到您的盒子锁定".
但为什么?我不太喜欢的是冒号.
user@host$ :(){ :|:& };:
dbr*_*dbr 79
:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)
..定义一个名为的函数:,它产生自身(两次,一个管道到另一个)和背景本身.
有换行符:
:()
{
:|:&
};
:
Run Code Online (Sandbox Code Playgroud)
将:函数重命名为forkbomb:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Run Code Online (Sandbox Code Playgroud)
您可以通过使用ulimit限制每个用户的进程数来防止此类攻击:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
Run Code Online (Sandbox Code Playgroud)
更永久地,你可以使用/etc/security/limits.conf(至少在Debian和其他人身上),例如:
* hard nproc 50
Run Code Online (Sandbox Code Playgroud)
当然这意味着你只能运行50个进程,你可能希望根据机器的运行情况增加这些进程!
Joh*_*iss 64
它定义了一个:调用自身两次的函数 (代码:) : | :.它在后台(&)中完成.完成;函数定义并:启动函数后.
因此,每个实例:启动两个新的:依此类推......就像进程的二叉树一样......
用简单的C写的是:
while(1) {
fork();
}
Run Code Online (Sandbox Code Playgroud)