这个神秘的Bash命令意味着什么?

Modified on: Fri, 07 Dec 2018 07:00:02 +0800

我正在阅读Ubuntu论坛关于恶意命令的警告,并发现了这个有趣的宝石:

  

:(){ :|:& };:

  
  

警告:以上代码 会使您的计算机崩溃,除非您有严格的proc限制(您可能没有)提示硬重启。

  
  

考虑此代码类似于运行sudo rm -rf /

但这意味着什么?即使有我的编程经验,我也从来没有见过那些不是汇编语言的神秘命令。

作者:3498DB,TheLQ

最佳答案

正如你所说,这是一个叉子炸弹。它的作用是定义一个函数,然后调用它。该函数名为:

我们将其命名为forkbomb,以便我们更好地了解正在发生的事情:

forkbomb(){ forkbomb|forkbomb& };forkbomb

正如您所看到的,可能从编程经验中猜到,第一部分是函数定义(forkbomb(){ ... }),最后一部分是:

现在,这个功能有什么作用?如果你熟悉Bash,你就会知道|字符将一个命令/程序的标准输出传递给另一个命令/程序的标准输入。所以基本上,:|:启动函数的两个实例(这就是它“forks”)。

然后是魔术:&将这些命令放在后台,允许原始函数返回,而每个实例分叉直到奶牛在后台回家,从而耗尽所有你的资源和取消系统(除非它有限制)。


相关问答

添加新评论