Linux shell 的一个fork炸弹

.(){ .|.& };.  或者  :(){ :|:& };:

这13个字符由Jaromil ,在 2002 年设计了最为精简的一个 fork炸弹的实现。

.()  说明下面要定义一个函数,函数名为小数点,没有可选参数;
{    表示函数体的开始;
.|.& 表示函数体真正要做的事情,首先它递归使用本函数,然后李永贵管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行。
}    表示函数体的结束;
;    并不会执行什么操作,在命令行中用来分隔两个命令用。从总体来看,它表明这段程序包含两个部分,首先定义了一个函数,然后调用这个函数;
.    表示调用本函数。

这个递归函数能够调用自身,不断地生成新的进程,最终造成拒绝服务攻击,函数调用该前的&将子进程放入后台。这段危险的代码会分支出大量的进程,因而被称为Fork炸弹。

可以通过修改配置文件/etc/security/limits.conf来限制可生成的最大的进程数来避开这枚炸弹。

Linux shell 的一个fork炸弹,布布扣,bubuko.com

时间: 2024-10-14 05:19:12

Linux shell 的一个fork炸弹的相关文章

Linux shell脚本中调用另一个shell(exec、source、fork)

  在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh).source(source script.sh).fork(./script.sh) exec(exec /home/script.sh): 使用exec来调用脚本相当于在当前shell执行了一条命令,不会产生新的进程,被执行的脚本会继承当前shell的环境变量.但是当exec调用完毕后,当前shell也会结束,剩下的代码不会执行. source(source /home/script.sh) 使

Linux fork炸弹解析 ——Linux Fork Bomb

Linux Fork Bomb :(){ :|: & };:是一个bash函数,以Fork Bomb闻名,是一个拒绝服务攻击 的Linux 系统.如果你好奇地去执行了这个命令,那么赶快重启系统吧~! 命令解析 :() { : | : & };: :在这里是一个函数名,我们定义之,并在后面执行它. :|:&,:函数的输出通过管道传给另一个冒号函数作为输入,并且在后台执行. { };标识着里面的内容是一个函数主体. 最后一个:为定义完成后的一次函数执行. 原理解析 首先需要说明的是:是

fork 炸弹----linux

既然我们讨论的都是些奇怪的代码,不妨思考一下这一行: :(){ :|: & };: 对你来说,这可能看起来有些神秘,但是我看来,它就是那个臭名昭著的 Bash fork 炸弹.它会反复启动新的 Bash shell,直到你的系统资源消耗殆尽.系统崩溃. 不应该在最新的 Linux 系统上做这些操作.注意,我说的是不应该.我没有说不能.正确设置用户权限,Linux 系统能够阻止这些破坏性行为.通常用户仅限于分配使用机器可用内存.但是如果作为 root 用户的你运行了这行命令(或者它的变体 Bash

理解 Linux shell 中的一个方言:2>&1

理解 Linux shell 中的一个方言:2>&1 2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如果是刚开始接触Linux,这个东西的确不好理解,因为他没有直观的含义,不像一个命令,例如 cp是 copy 的简写,很好记. 我以前刚用Linux时就对这个东西迷糊了一段时间,今天刚好看到一篇文章介绍他,感觉很有必要总结出来,分享给还不是很理解这个方言的朋友. 下面看一个命令示例,然后分析下他是如何工作的: l

一个修改配置文件的linux shell script

不久以前,曾经搜到一篇博客是读取配置文件的,http://www.cnblogs.com/bo083/archive/2012/11/19/2777076.html,用到现在,感觉十分方便,感谢作者. 现在,需要通过web界面给用户留出接口来修改类似配置文件,大的方法是从php调用linux shell script,于是,现在贴一个可以修改此种配置文件的linux shell. 首先,配置文件的格式如下: [unit1] field1=value1 field2=value2 [unit2]

linux中新增一个shell命令的方法

1. 可以在一个自己建立的shell脚本中定义一个函数,使用 ". xxx.sh" 或者 "source xxx.sh" 运行这个shell脚本之后,其中的function就自动成为了当前shell中的新增命令了. 2. android编译配置环境时会运行. build/envsetup.sh脚本,就是使用这种方法为当前shell新增了一些命令,如:croot, lunch, mm, mmm, mma, cgrep等等.一直以为envsetup.sh中做了什么高级操

一个简单的例子区分linux shell 正则表达式中的 *,+,?

1,linux shell 正则表达式 *和+号的区别 例子记忆: [[email protected] data]# touch test.txt[[email protected] data]# cat>>test.txt<<EOF> gooood> goood> good> god> gd> EOF * 表示重复前面字符0次或多次 [[email protected] data]# grep "go*d" test.tx

fork炸弹

:(){ :|:& };:                         # 著名的 fork炸弹,系统执行海量的进程,直到系统僵死 fork炸弹(fork bomb)在计算机领域中是一种利用系统调用fork(或其他等效的方式)进行的拒绝服务攻击.与病毒与蠕虫不同的是,fork炸弹没有传染性,而且fork炸弹会使对同时执行进程/程序数设限的系统无法执行新程序,对于不设限的系统则使之停止响应.以fork炸弹为代表的自我复制程序有时亦被称为wabbit. fork炸弹的概念:进程递归式派生(for

linux shell for循环解决递归循环目录结构

今天总结一下关于linux shell里的递归循环的问题起因是一个群友在群里的提问问的是怎么把有或多或少空目录的几个文件移动走的问题归根结底就是一个递归循环的问题 如果之前接触过c语言之类的编程语言.那么这个很好理解就是通过函数来不断的自己调用自己这种方法有一个很大的弊端就是需要很多资源比如有一种进程调用的 fork 炸弹 就是自调用搞的 接下来我就贴一下代码然后简单的讲解一下 #!/bin/sh . /etc/plus.lib a() {     for file  in `ls $1`