自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux | 只有十三個(gè)字符的經(jīng)典Fork炸彈,討厭誰(shuí)就去整他吧!

系統(tǒng) Linux
Fork炸彈帶來(lái)的后果就是耗盡服務(wù)器資源,使服務(wù)器不能正常的對(duì)外提供服務(wù),也就是常說的DoS(Denial of Service)。與傳統(tǒng)1v1、通過不斷向服務(wù)器發(fā)送請(qǐng)求造成服務(wù)器崩潰不同,F(xiàn)ork炸彈有種坐山觀虎斗,不費(fèi)一兵一卒斬?cái)橙擞隈R下的感覺。更嚇人的是這個(gè)函數(shù)是不需要root權(quán)限就可以運(yùn)行的。

[[193409]]

Jaromil在2002年設(shè)計(jì)了最為精簡(jiǎn)的一個(gè)Linux Fork炸彈,整個(gè)代碼只有13個(gè)字符,在shell中運(yùn)行后幾秒后系統(tǒng)就會(huì)宕機(jī):

 

這樣看起來(lái)不是很好理解,我們可以更改下格式:

 

更好理解一點(diǎn)的話就是這樣:

 

因?yàn)閟hell中函數(shù)可以省略function關(guān)鍵字,所以上面的十三個(gè)字符是功能是定義一個(gè)函數(shù)與調(diào)用這個(gè)函數(shù),函數(shù)的名稱為:,主要的核心代碼是:|:&,可以看出這是一個(gè)函數(shù)本身的遞歸調(diào)用,通過&實(shí)現(xiàn)在后臺(tái)開啟新進(jìn)程運(yùn)行,通過管道實(shí)現(xiàn)進(jìn)程呈幾何形式增長(zhǎng),最后再通過:來(lái)調(diào)用函數(shù)引爆炸彈.因此,幾秒鐘系統(tǒng)就會(huì)因?yàn)樘幚聿贿^來(lái)太多的進(jìn)程而死機(jī),解決的唯一辦法就是重啟。 

Bomb一下

秉著不作不死的心態(tài),我們也來(lái)運(yùn)行一下,于是我將矛頭指向云主機(jī),我使用了國(guó)內(nèi)的一個(gè)2G內(nèi)存的云主機(jī),首先在本地開啟兩個(gè)終端,在一個(gè)終端連接云主機(jī)后運(yùn)行炸彈,幾秒后再嘗試用另外一個(gè)終端登錄,效果可以看下面Gif圖: 

 

看,運(yùn)行一段時(shí)間后直接報(bào)出了-bash: fork: Cannot allocate memory,說明內(nèi)存不足了。并且我在二號(hào)終端上嘗試連接也沒有任何反應(yīng)。因?yàn)槭翘摂M的云主機(jī),所以我只能通過主機(jī)服務(wù)商的后臺(tái)來(lái)給主機(jī)斷電重啟。然后才能重新登錄:

 


炸彈危害 

Fork炸彈帶來(lái)的后果就是耗盡服務(wù)器資源,使服務(wù)器不能正常的對(duì)外提供服務(wù),也就是常說的DoS(Denial of Service)。與傳統(tǒng)1v1、通過不斷向服務(wù)器發(fā)送請(qǐng)求造成服務(wù)器崩潰不同,F(xiàn)ork炸彈有種坐山觀虎斗,不費(fèi)一兵一卒斬?cái)橙擞隈R下的感覺。更嚇人的是這個(gè)函數(shù)是不需要root權(quán)限就可以運(yùn)行的??吹骄W(wǎng)上有帖子說某些人將個(gè)性簽名改為Fork炸彈,結(jié)果果真有好奇之人中槍,試想如果中槍的人是在公司服務(wù)器上運(yùn)行的話,oh,!

預(yù)防方式 

當(dāng)然,F(xiàn)ork炸彈沒有那么可怕,用其它語(yǔ)言也可以分分鐘寫出來(lái)一個(gè),例如,python版:

 

Fork炸彈的本質(zhì)無(wú)非就是靠創(chuàng)建進(jìn)程來(lái)?yè)屨枷到y(tǒng)資源,在Linux中,我們可以通過ulimit命令來(lái)限制用戶的某些行為,運(yùn)行ulimit -a可以查看我們能做哪些限制:

 

可以看到,-u參數(shù)可以限制用戶創(chuàng)建進(jìn)程數(shù),因此,我們可以使用ulimit -u 20來(lái)允許用戶最多創(chuàng)建20個(gè)進(jìn)程。這樣就可以預(yù)防bomb炸彈。但這樣是不徹底的,關(guān)閉終端后這個(gè)命令就失效了。我們可以通過修改/etc/security/limits.conf文件來(lái)進(jìn)行更深層次的預(yù)防,在文件里添加如下一行(ubuntu需更換為你的用戶名):

ubuntu - nproc 20

這樣,退出后重新登錄,就會(huì)發(fā)現(xiàn)最大進(jìn)程數(shù)已經(jīng)更改為20了,

 

這個(gè)時(shí)候我們?cè)俅芜\(yùn)行炸彈就不會(huì)報(bào)內(nèi)存不足了,而是提示-bash: fork: retry: No child processes,很棒,此時(shí)說明Linux限制了炸彈創(chuàng)建線程。

責(zé)任編輯:龐桂玉 來(lái)源: 馬哥Linux運(yùn)維
相關(guān)推薦

2010-05-24 14:43:39

Linux性能監(jiān)測(cè)工具

2021-12-06 10:15:37

Linuxcat命令

2021-09-18 10:00:24

ReactJavaScript前端

2013-12-13 09:15:38

2021-10-06 15:58:26

Python工具代碼

2022-03-03 10:18:51

Linux監(jiān)控工具服務(wù)器

2017-03-27 09:42:58

JavaScript數(shù)據(jù)網(wǎng)格庫(kù)

2023-11-20 22:04:33

2017-09-06 15:53:55

機(jī)器學(xué)習(xí)人工智能框架

2009-02-09 09:53:50

2009-06-19 13:39:07

Java程序員Flex

2021-07-23 16:22:58

鴻蒙HarmonyOS應(yīng)用

2022-02-23 11:00:10

芯片GPUIntel

2009-06-24 13:06:41

JSF組件Facelets

2019-12-16 09:26:05

Java設(shè)計(jì)操作系統(tǒng)

2023-04-25 15:46:51

Python字符串

2018-01-26 14:41:04

編程Python開發(fā)

2020-09-07 07:35:03

Grep命令字符串

2017-01-13 15:45:05

Linuxfork函數(shù)詳解

2019-09-04 11:25:25

數(shù)字經(jīng)濟(jì)數(shù)據(jù)中心云基建
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)