• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Shell脚本经典之Fork炸弹的分析与预防

    fork炸弹介绍

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

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

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

    fork炸弹分析

    :() { :|: };:

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

    :()
    {
     :|:
    }
    ;
    :

    冒号”:”其实是函数名,这个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命令总结大全
    • shell脚本学习之调用脚本将文件打包zip的方法示例
    • Linux下NC反弹shell命令(推荐)
    • shell脚本实现多彩进度条
    • shell如何记录用户的IP与命令详解
    • shell脚本实现多进程运行的方法示例
    • 详解Linux Shell 实现一个获取任意位数的随机密码的脚本
    上一篇:利用Shell 脚本解决DDOS攻击问题
    下一篇:shell脚本实现多进程运行的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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