婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Shell腳本經典之Fork炸彈的分析與預防

Shell腳本經典之Fork炸彈的分析與預防

熱門標簽:地圖標注人員分布 益陽400電話申請辦理流程 梧州防封電銷卡 上海機器人外呼系統哪家好 怎么用百度地圖標注坐標 江西全自動外呼系統報價 400的電話一般從哪里辦理 春運地圖標注app 昆明電銷機器人價格

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命令總結大全
  • shell腳本學習之調用腳本將文件打包zip的方法示例
  • Linux下NC反彈shell命令(推薦)
  • shell腳本實現多彩進度條
  • shell如何記錄用戶的IP與命令詳解
  • shell腳本實現多進程運行的方法示例
  • 詳解Linux Shell 實現一個獲取任意位數的隨機密碼的腳本

標簽:北京 贛州 河南 亳州 懷化 新疆 惠州 九江

巨人網絡通訊聲明:本文標題《Shell腳本經典之Fork炸彈的分析與預防》,本文關鍵詞  Shell,腳本,經典,之,Fork,炸彈,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell腳本經典之Fork炸彈的分析與預防》相關的同類信息!
  • 本頁收集關于Shell腳本經典之Fork炸彈的分析與預防的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 林芝县| 普宁市| 常州市| 海城市| 鱼台县| 高平市| 珠海市| 道孚县| 潮安县| 许昌市| 宾阳县| 连江县| 石林| 香格里拉县| 武平县| 淮安市| 九江县| 辽源市| 清新县| 肇东市| 凤台县| 缙云县| 车致| 淮北市| 肥城市| 伊春市| 永年县| 汉川市| 耒阳市| 资兴市| 长治县| 天水市| 石家庄市| 闻喜县| 尼木县| 元江| 白城市| 延津县| 咸阳市| 乌恰县| 上栗县|