日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fork炸弹c语言能否运行,Fork炸弹简析和应对方法

發(fā)布時間:2024/1/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fork炸弹c语言能否运行,Fork炸弹简析和应对方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡述

第一次聽到fork炸彈這種東西的時候以為是一個很神奇的破壞力驚人的高能腳本,然而稍微深入的了解了一下才發(fā)現(xiàn)這個玩意其實是個挺簡單純粹的東西,只是被一個叫Jaromil的家伙對他的精美包裝給戲耍了。他在2002年給出了Linux下fork炸彈的最經(jīng)典的形式:

myths@myths-X450LD:~$ :(){ :|:& };:

一段非常忽悠人的代碼,只有13個字母,乍一看完全看不懂。。但其實這個代碼的思路非常簡單,就是遞歸的開一個新的進程,不斷的開不斷的開,直到操作系統(tǒng)崩潰。中招后唯一的解決辦法就是拔電源重啟。

作為長期寫C語言的我們來說,看這段代碼有一個很大的坎,就是標識符。C語言里的標識符是不會包含" : "這個東西的,然而這里的函數(shù)名恰恰就是這個“ : ”。所謂的fork炸彈,其實就是聲明了一個函數(shù),這個函數(shù)的名字叫做" : " 他的函數(shù)體是調(diào)用它本身,并且用管道將他的輸出重定向到另一個該函數(shù),并在后臺運行。最后調(diào)用這個函數(shù)。稍微清楚的寫法是:bomb(){

bomb|bomb&

};

bomb

這樣就清楚很多了,也就沒啥神秘的了。

后果

這段代碼執(zhí)行的后果不用說,就是電腦死機。死機的原因就類似DDoS攻擊一樣,系統(tǒng)忙于處理這個垃圾程序生成的垃圾進程而無法分配給我們需要執(zhí)行的程序。所以,一般沒事做的話不要跑這個代碼(話說我就無聊的跑了兩遍)。

其實fork炸彈的危險性倒不是特別大,破壞力也不是特別強,畢竟重啟一下就行了。Linux下也有其他擁有更強破壞力的命令,然而為什么都沒有他有名呢?原因很簡單,fork炸彈的執(zhí)行不需要root權(quán)限!獲取root權(quán)限實在不容易,而fork炸彈可以完全繞過這一點來對電腦進行破壞,所以這才厲害。

預防

預防fork命令的方法也很清楚,就是限制系統(tǒng)的最大進程數(shù),這樣就算運行了也不會死機了,就留給我們殺掉這個進程的機會了。

在這里我們可以通過ulimit命令來查看系統(tǒng)定義的最大進程數(shù):myths@myths-X450LD:~$ ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 15261

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time (seconds, -t) unlimited

max user processes (-u) 15261

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

注意倒數(shù)第三行,根據(jù)這一行我們就可以看到當前的最大進程數(shù)是15261,而且可以看到對應的參數(shù)是 -u,這樣我們就可以進行修改了:

myths@myths-X450LD:~$ ulimit -u 200

這樣下來最大進程數(shù)就是200了。

但是這樣設置下來的數(shù)據(jù)只能在當前終端奏效,當關(guān)閉當前終端后,系統(tǒng)會重新調(diào)回默認值的。

所以最終的解決辦法是修改配置文件。系統(tǒng)的配置文件是 /etc/security/limits.conf :myths@myths-X450LD:~$ cat /etc/security/limits.conf

# /etc/security/limits.conf

#

#Each line describes a limit for a user in the form:

#

#

#

#Where:

# can be:

# - a user name

# - a group name, with @group syntax

# - the wildcard *, for default entry

# - the wildcard %, can be also used with %group syntax,

# for maxlogin limit

# - NOTE: group and wildcard limits are not applied to root.

# To apply a limit to the root user, must be

# the literal username root.

#

# can have the two values:

# - "soft" for enforcing the soft limits

# - "hard" for enforcing hard limits

#

# can be one of the following:

# - core - limits the core file size (KB)

# - data - max data size (KB)

# - fsize - maximum filesize (KB)

# - memlock - max locked-in-memory address space (KB)

# - nofile - max number of open files

# - rss - max resident set size (KB)

# - stack - max stack size (KB)

# - cpu - max CPU time (MIN)

# - nproc - max number of processes

# - as - address space limit (KB)

# - maxlogins - max number of logins for this user

# - maxsyslogins - max number of logins on the system

# - priority - the priority to run user process with

# - locks - max number of file locks the user can hold

# - sigpending - max number of pending signals

# - msgqueue - max memory used by POSIX message queues (bytes)

# - nice - max nice priority allowed to raise to values: [-20, 19]

# - rtprio - max realtime priority

# - chroot - change root to directory (Debian-specific)

#

#

#

#* soft core 0

#root hard core 100000

#* hard rss 10000

#@student hard nproc 20

#@faculty soft nproc 20

#@faculty hard nproc 50

#ftp hard nproc 0

#ftp - chroot /ftp

#@student - maxlogins 4

# End of file

我們發(fā)現(xiàn)里面的說明注釋還是很全的,照著弄就好了。這里我們一般是添加一句:myths soft npro 200

myths hard npro 200

最后保存下文件并且注銷下用戶,重新登陸回來可以看到配置已經(jīng)更改。

注:我在這里發(fā)現(xiàn)了一個問題,就是在我的ubuntu 14,04 上,用修改配置文件的方法修改后會導致系統(tǒng)崩潰。。原因不明,可能是進程數(shù)設置小了吧。

總結(jié)

以上是生活随笔為你收集整理的fork炸弹c语言能否运行,Fork炸弹简析和应对方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。