全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Shell脚本经典之Fork炸弹的分析与预防

fork炸弹介绍

众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能。这样的一款shell中自然不会缺少函数这个元素来帮助程序进行模块化的高效开发与管理。于是产生了由于其特殊的特性,bash拥有了fork炸弹。Jaromil在2002年设计了最为精简的一个fork炸弹的实现。

所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特别的权限即可对系统造成破坏。fork炸弹实质是一个简单的递归程序。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源。

现在来看看Jaromil设计的最简单的fork炸弹

fork炸弹分析

:() { :|:& };:

一行看似无法理解的只有13个字符的命令,即可占用掉所有系统的资源。其实,这行命令如果这样写成bash script就不难理解了

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

冒号”:”其实是函数名,这个bash脚本就是在不断的执行该函数,然后不断fork出新的进程。

fork炸弹预防

那么,有没有办法扼制这种情况的发生呢?答案是肯定的,只需设置进程的limit数即可。

$ ulimit -u 128
$ ulimit -a
core file size   (blocks, -c) 0
data seg size   (kbytes, -d) unlimited
max nice      (-e) 20
file size    (blocks, -f) unlimited
pending signals     (-i) unlimited
max locked memory  (kbytes, -l) unlimited
max memory size   (kbytes, -m) unlimited
open files      (-n) 1024
pipe size   (512 bytes, -p) 8
POSIX message queues  (bytes, -q) unlimited
max rt priority     (-r) unlimited
stack size    (kbytes, -s) 8192
cpu time    (seconds, -t) unlimited
max user processes    (-u) 128
virtual memory   (kbytes, -v) unlimited
file locks      (-x) unlimited

在上面的例子中,我们将用户可以创建的最大进程数限制为 128,执行fork炸弹会迅速fork出大量进程,此后会由于资源不足而无法继续执行。使用工具ulimit即可设置各种限制数,具体的请参考该工具的man或help。

fork 炸弹让我们认识到了递归函数的强大功能,同时也意识到一旦使用不当,递归函数所造成的破坏将是巨大的。实际上,fork 炸弹只是一个非常简单的递归函数,它并不涉及参数传递、返回值等问题,而这些问题在使用bash编程时是否有完善的支持呢?在bash中编写递归函数时应该注意相关问题。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# shell  # fork  # 经典脚本  # linux  # 提高你工作效率的shell命令总结大全  # shell脚本学习之调用脚本将文件打包zip的方法示例  # Linux下NC反弹shell命令(推荐)  # shell脚本实现多彩进度条  # shell如何记录用户的IP与命令详解  # shell脚本实现多进程运行的方法示例  # 详解Linux Shell 实现一个获取任意位数的随机密码的脚本  # 递归  # 是一个  # 要做  # 一个函数  # 是一种  # 让我们  # 要有  # 只需  # 这段  # 将是  # 如果没有  # 意识到  # 来看看  # 这种情况  # 没有办法  # 可选  # 所有资源  # 在上面  # 这篇文章  # 不需 


相关文章: 建站DNS解析失败?如何正确配置域名服务器?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  免费网站制作appp,免费制作app哪个平台好?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何用西部建站助手快速创建专业网站?  如何用PHP快速搭建高效网站?分步指南  攀枝花网站建设,攀枝花营业执照网上怎么年审?  济南网站制作的价格,历城一职专官方网站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  ui设计制作网站有哪些,手机UI设计网址吗?  如何挑选最适合建站的高性能VPS主机?  如何高效利用亚马逊云主机搭建企业网站?  如何在宝塔面板中修改默认建站目录?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何用IIS7快速搭建并优化网站站点?  如何通过老薛主机一键快速建站?  小型网站建站如何选择虚拟主机?  建站主机与服务器功能差异如何区分?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Android自定义listview布局实现上拉加载下拉刷新功能  如何用y主机助手快速搭建网站?  css网站制作参考文献有哪些,易聊怎么注册?  建站主机服务器选购指南:轻量应用与VPS配置解析  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星导航菜单设置与功能模块配置全攻略  大连网站设计制作招聘信息,大连投诉网站有哪些?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  TestNG的testng.xml配置文件怎么写  建站之星IIS配置教程:代码生成技巧与站点搭建指南  ,柠檬视频怎样兑换vip?  如何在阿里云高效完成企业建站全流程?  如何打造高效商业网站?建站目的决定转化率  建站主机选购指南:核心配置优化与品牌推荐方案  香港服务器WordPress建站指南:SEO优化与高效部署策略  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星与建站宝盒如何选择最佳方案?  如何在Windows服务器上快速搭建网站?  如何零成本快速生成个人自助网站?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  七夕网站制作视频,七夕大促活动怎么报名?  如何用美橙互联一键搭建多站合一网站?  如何正确下载安装西数主机建站助手?  金*站制作公司有哪些,金华教育集团官网?  如何基于PHP生成高效IDC网络公司建站源码?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  Swift中switch语句区间和元组模式匹配  ,怎么在广州志愿者网站注册?  如何在建站之星绑定自定义域名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。