fork boom

:() { :|:& };:

注解如下:

:() # 定义函数,函数名为”:”,即每当输入”:”时就会自动调用{}内代码 { # “:”函數起始字元
: # 用递归方式调用”:”函数本身
| # 並用管線(pipe)將其輸出引至…(因为有一个管線操作字元,因此會生成一個新的進程)
: # 另一次递归调用的”:”函数
#综上,”:|:”表示的即是每次調用函数”:”的時候就會產生兩份拷貝
& # 調用間脱鉤,以使最初的”:”函数被關閉後為其所調用的兩個”:”函數還能繼續執行 } # “:”函數終止字元 ; # “:”函数定义结束后将要进行的操作… : #
调用”:”函数,”引爆”fork炸弹

Windows下則可以批次處理命令如下實作:

%0|%0

默认情况下,bash处于非POSIX模式,此时对命令的解释顺序如下:

  • 关键字,例如 if、for 等。
  • 别名。别名不能与关键字相同,但是可以为关键字定义别名,例如 end=fi。
  • 特 殊内嵌命令,例如 break、continue 等。POSIX 定义的特殊内嵌命令包括:.(小数点)、:(冒号)、break、continue、
    eval、exec、exit、export、readonly、 return、set、shift、times、trap 和 unset。
    bash 又增加了一个特殊的内嵌命令 source。
  • 函数。如果处于非 POSIX 模式,bash 会优先匹配函数,然后再匹配内嵌命令。
  • 非特殊内嵌命令,例如 cd、test 等。
  • 脚本和可执行程序。在 PATH 环境变量指定的目录中进行搜索,返回第一个匹配项。 由 于默认情况下,bash 处于非 POSIX 模式,因此fork炸弹中的小数点会优先当成一个函数进行匹配。(注:使用小数点代替其中的冒号,也能起到完全相同的效果。)

要使用POSIX模式来运行bash脚本,可以使用以下三种方法:

  1. 使用 -posix 选项启动 bash
  2. 在运行bash之后,执行 set -o posix 命令
  3. 使用 /bin/sh

由于Fork Bomb通过不断的开新进程来瘫痪系统,一个防止其严重影响系统的方法就是限定一个用户能够创建的进程数的上限,在Linux系统上,可以通过ulimit这个指令达到相应的效果,例如:
ulimit -Hu 30
这个指令可以限制每一个用户最多只能创建30个进程
还可以通过修改配置文件/etc/security/limits.conf来限制可生成的最大进程数来避开这枚炸弹
而FreeBSD系统的话系统管理者可以在/etc/login.conf底下的配置文件进行相关的设置

http://en.wikipedia.org/wiki/Fork_bomb
https://zh.wikipedia.org/wiki/Fork%E7%82%B8%E5%BC%B9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值