Linux

如何防止意外 rm -rf /*?

  • September 3, 2020

rm -rf /*我只是不小心跑了,但我的意思是rm -rf ./*(注意斜線後面的星號)。

alias rm='rm -i'預設情況下並--preserve-root沒有救我,所以有什麼自動保護措施嗎?


我不是 root 並立即取消了該命令,但在某處或某處有一些寬鬆的權限,因為我注意到我的 Bash 提示已經中斷。我不想依賴權限而不是 root(我可能會犯同樣的錯誤sudo),我不想因為系統某處失去一個文件而尋找神秘的錯誤,所以,備份和sudo好的,但對於這種特定情況,我想要更好的東西。


關於三思而後行。我實際上正在使用它!但我用它來解決一些涉及 10 種不同事物的複雜程式任務。我沉浸在這項任務中已經足夠深了,沒有任何腦力來檢查標誌和路徑,我什至不考慮命令和參數,我認為是’空目前目錄’之類的操作,我大腦的不同部分將它們轉換為命令,有時它會出錯。我希望電腦能夠糾正它們,至少是那些危險的。

我遵循的技巧之一是在使用命令時放在#開頭。rm

root@localhost:~# #rm -rf /

這可以防止rm在錯誤的文件/目錄上意外執行。驗證後,#從頭刪除。這個技巧很有效,因為在 Bash 中,以 開頭的單詞#會導致該單詞和該行上的所有剩餘字元被忽略。所以這個命令被簡單地忽略了。

或者

如果你想阻止任何重要的目錄,還有一個技巧。

在該目錄中創建一個名為的文件-i。這麼奇怪的文件是怎麼產生的?使用touch -- -itouch ./-i

現在嘗試rm -rf *

sachin@sachin-ThinkPad-T420:~$ touch {1..4}
sachin@sachin-ThinkPad-T420:~$ touch -- -i
sachin@sachin-ThinkPad-T420:~$ ls
1  2  3  4  -i
sachin@sachin-ThinkPad-T420:~$ rm -rf *
rm: remove regular empty file `1'? n
rm: remove regular empty file `2'? 

此處*將擴展-i為命令行,因此您的命令最終變為rm -rf -i. 因此,命令將在刪除之前提示。您可以將此文件放在您的/, /home/,/etc/等中。

或者

--preserve-root用作rm. _ 在rm包含在較新的coreutils軟體包中,此選項是預設選項。

--preserve-root
             do not remove `/' (default)

或者

使用安全rm

摘自網站:

Safe-rm 是一種安全工具,旨在通過將 /bin/rm 替換為包裝器來防止意外刪除重要文件,該包裝器會根據可配置的文件和目錄黑名單檢查給定的參數,這些文件和目錄不應被刪除。

嘗試刪除這些受保護文件或目錄之一的使用者將無法這樣做,而是會顯示一條警告消息:

$ rm -rf /usr
Skipping /usr

引用自:https://serverfault.com/questions/337082