我正在阅读 Ubuntu 论坛关于恶意命令的警告,并发现了这个有趣的 gem:
:(){ :|:& };:警告:上面的代码会使你的机器崩溃,除非你有严格的 proc 限制(你可能没有)提示硬重启。
考虑这个类似于运行的代码
sudo rm -rf /。
但是,这是什么意思?即使有我的编程经验,我也从未见过一个不是汇编语言的神秘命令。
#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
Run Code Online (Sandbox Code Playgroud)
这是分叉炸弹的代码。
在我们学院,我们通过 telnet 即客户端服务协议进行连接。大约 100 个系统连接到服务器。突然我们看到服务器变得很慢,一段时间后它崩溃了。我开始知道有人实施了一个叉子炸弹。
我们如何检测分叉炸弹是在哪个系统上实现的?我们怎样才能阻止它?
一种方法是限制单个用户可以拥有的最大进程数。有什么方法可以阻止它并知道它是从哪个系统实现的?
#include <unistd.h>
int main(int argc, char* argv[]) {
while(1)
{
fork();
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的 linux 上运行这个程序,终端上没有任何输出,操作系统似乎死了。linux对这种内存不足的程序有什么保护措施吗?
可能重复:
这个神秘的 bash 命令是什么意思?
为什么这个命令会导致 Linux 崩溃?
:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)