在現代的Unix操作系統上執行sudo rm -rf /會發生什麼?
比如Ubuntu或者OS X上。
很好奇會不會把系統全部幹掉。不敢嘗試。請有經驗的兄弟分享下經歷。
題主問的是Unix系統,這東西現在不好找啊,還能免費獲得的只有BSD系列了吧。正好有一個FreeBSD 9.0的虛擬機,應該屬於現代Unix系統了吧,試驗結果是:沒有sudo;用root執行以後神馬也沒發生。
加上那個--no-preserve-root參數,會有一堆東西提示許可權不夠無法刪除。
然後,本來想給題主看看刪除了什麼東西,但是ls被刪掉了。補充一下,本來想虛擬機關掉洗洗睡了,shutdown沒有了,sudo也沒有了,init 0也不行,exit之後ssh再也連不上了,在VMware裡面root也登錄不進去了(就是輸入了root然後就不提示輸入口令了),重啟一下變成這樣子,/boot也被刪掉了。
曾經隨便進了一家apple store,隨便找了一個air,打開terminal, sudo rm -rf / 確實有一些是無法刪除的。會報錯。但還是應該刪了很多。。。於是切出terminal, 轉身就走了,深藏功與名
剛剛學習linux時,老師將 rm命令,提到 rm -rf . /*,說這個命令很厲害,然後,我就ssh連接到老師的虛擬機上,華麗的敲下了 rm -rf . /* +回車。然後看到老師在那裡狂敲回車沒有反映。。。
其實我們的伺服器上,rm都被改成mv了,設置了一個回收站,rm的全都放到回收站,只有經過一定周期才能清理這個回收站的東西。
不過現在系統的容錯還是挺不錯的,rm根目錄都會給出提示,因為這明顯是個錯誤指令 :)請使用 sudo rm-rf /*
題主說ubuntu的話,我也在虛擬機里干過……http://www.youtube.com/watch?v=j4HoaFx0VEk
2333,這問題讓我想起bumblebee的血案~
原網頁,不過似乎被刪掉了。
https://github.com/MrMEEE/bumblebee/commit/a047be85247755cdbe0acce6#diff-1只找到這個頁面
一個空格引發的慘案--bumblebee事件除了某些映射出來的目錄,比如/dev,都會全部呵呵
會問你要管理員密碼。
在 OS X 下實驗完了,版本是 10.11.3,SIP 完全開啟,執行完了以後只有 /Applications/.localized 被刪除,其餘的所有項都禁止訪問,導致 Finder 裡面顯示為英文的 Applications 而不是「應用程序」,幸好這個文件只是個空文件,於是我一句 touch .localized 解決了。
所以大家除非有特殊情況,就不要關閉 SIP 了,多有安全感啊。實驗歸實驗,最後還是標準說了算。手邊的POSIX?標準(2013 edition with 2008TC2/D3 applied)L.106819-106821, P.3186, Chpt. 4, Vol.3 是這麼寫的(這三行被放在了rm這個工具的描述的開頭!):
If either of the files dot or dot-dot are specified as the basename portion of an operand (that is, the final pathname component) or if an operand resolves to the root directory, rm shall write a diagnostic message to standard error and do nothing more with such operands.
(萬一你讀不懂英文的話:標準規定如果要rm的是根目錄,就在stderr上輸出一條診斷消息,然後啥也不幹。)
實驗結果驗證了這一點。
如果你真有這個許可權,你一定會後悔的,在類UNIX環境下,所有路徑都從/開始,所以建議維護人員一定使用絕對路徑,避免悲劇
你可以試試sudo dd if=dev/zero of=dev/sda
unit系統啟動的時候會把內核載入在內存中,題主的命令 rm:刪除,參數-rf :遞歸強制,:根目錄,強制刪除根目錄下所有文件,當然包括操作系統……,但是呢系統還是能運行的,重啟後機器沒地方載入內核,系統已經被幹掉了。
學Liunx的時候,剛辛辛苦苦裝好win10+ubuntu雙系統,看到這個rm -rf /*說是很神奇的命令敲完回車之後。。重裝系統。。很深刻的記憶
有一次給一個朋友講解 sudo 許可權的正確使用姿勢。
然後在 iTerm 下用 sudo 執行了一個命令(忘了是啥),十分和諧。
然後繼續解說,哦有這樣一個命令,叫做 sudo rm -rf /,但是因為我沒有加 sudo,所以不輸密碼就好了,這個會造成這樣那樣的後果,不要隨便嘗試。
於是我得意洋洋地按下了 return,當然我完全忘了有 sudo 後記住密碼這種東西。
及時地按下了 ctrl + c,當時十分慶幸手快。
然而事情並沒有這樣結束,我眼睜睜看著我桌面上的東西,各種應用,一點一點消失(十分有序),然後開始報錯,五國語言。
0.0
這個是OS X下測試視頻:https://www.youtube.com/watch?v=v8WjQNwFx20
首先看你根文件系統的屬性,只讀屬性的文件系統無法刪除任何東西。
其次,Unix的unlink可以直接刪除所有文件而不影響到打開的文件,因而open的文件會一直打開
因而系統將一直運行,直至文件系統出錯。重啟之後由於所有文件close,因而文件系統被清空。建議樓主一試。- sudo就不多說了,這個命令的唯一作用就是調用root的許可權去執行一些高級別許可權的命令,用的時候直接調用 vim /etc/sudoers 這個文件,你可以用root的許可權指定哪些用戶可以調用sudoers
- 而如果你直接用root用戶登陸的話,那就直接擁有了root許可權,也就是最高級的許可權,可以執行任何命令,就不需要再調用sudoers
好!直接上重點,讓我們看看執行完rm -rf會有什麼結果 ╰(*°▽°*)╯
可以看到,什麼東西都沒了,連reboot。init 0/6都執行不了了,也就是說,連開關機都不行了。。。。。(? _ ?)
好了,啥也不說了,執行前忘了備份資料庫了,現在什麼都沒有了,我要一個人到樓頂上靜靜。。。。。。 /(ㄒoㄒ)/~~
推薦閱讀:
※有什麼理由選擇收費的RHEL而不用免費的Centos?
※為什麼那麼多「國產」操作系統?
※linux kernel有設計和開發文檔嗎?
※Linux 系統有哪些自殺命令?
※在樹莓派上學習LINUX與在PC 上學習,學完後有什麼差別?