Linux 黑話解釋:什么是 sudo rm -rf?為什么如此危險(xiǎn)?
當(dāng)你剛接觸 Linux 時(shí),你會(huì)經(jīng)常遇到這樣的建議:永遠(yuǎn)不要運(yùn)行 sudo rm -rf /
。在 Linux 世界里,更是圍繞著 sudo rm -rf
有很多梗。
但似乎對(duì)于它也有一些混亂的認(rèn)識(shí)。在 清理 Ubuntu 以騰出空間 的教程中,我建議運(yùn)行一些涉及 sudo
和 rm -rf
的命令。一位讀者問我,如果 sudo rm -rf
是一個(gè)不應(yīng)該運(yùn)行的危險(xiǎn)的 Linux 命令,我為什么要建議這樣做。
因此,我想到了寫一篇 Linux 黑話解釋,以消除誤解。
sudo rm -rf 在做什么?
讓我們按步驟來學(xué)習(xí)。
rm
命令用于 在 Linux 命令行中刪除文件和目錄。
$ rm agatha
$
但是因?yàn)橛兄蛔x的 文件權(quán)限,有些文件不會(huì)被立即刪除。它們必須用選項(xiàng) -f
強(qiáng)制刪除。
$ rm books
rm: remove write-protected regular file 'books'? y
$ rm -f christie
$
另外,rm
命令不能被用來直接刪除目錄(文件夾)。你必須在 rm
命令中使用遞歸選項(xiàng) -r
。
$ rm new_dir
rm: cannot remove 'new_dir': Is a directory
因此最終,rm -rf
命令意味著遞歸地、強(qiáng)制刪除指定的目錄。
$ rm -r new_dir
rm: remove write-protected regular file 'new_dir/books'? ^C
$ rm -rf new_dir
$
下面是上述所有命令的截圖。
解釋 rm 命令的例子
如果你在 rm -rf
命令前加入 sudo
,你就是在刪除具有 root 權(quán)限的文件。這意味著你可以刪除由 root 用戶 擁有的系統(tǒng)文件。
所以,sudo rm -rf 是一個(gè)危險(xiǎn)的 Linux 命令?
嗯,任何刪除東西的命令都可能是危險(xiǎn)的,如果你不確定你正在刪除什么。
把 rm -rf
命令看作一把刀。刀是一個(gè)危險(xiǎn)的東西嗎?有可能。如果你用刀切蔬菜,那是好事。如果你用刀切手指,那當(dāng)然是不好的。
rm -rf
命令也是如此。它本身并不危險(xiǎn)。它只是用來刪除文件的。但是,如果你在不知情的情況下用它來刪除重要文件,那就有問題了。
現(xiàn)在來看看 sudo rm -rf /
。
你知道,使用 sudo
,你是以 root 身份運(yùn)行一個(gè)命令,這允許你對(duì)系統(tǒng)進(jìn)行任何改變。
/
是根目錄的符號(hào)。/var
表示根目錄下的 var
目錄。/var/log/apt
指的是根目錄的 log
目錄下的 apt
目錄。
Linux 目錄層次表示法
按照 Linux 目錄層次結(jié)構(gòu),Linux 文件系統(tǒng)中的一切都從根目錄開始。如果你刪除了根目錄,你基本上就是刪除了系統(tǒng)中的所有文件。
這就是為什么建議不要運(yùn)行 sudo rm -rf /
命令,因?yàn)槟銜?huì)抹去你的整個(gè) Linux 系統(tǒng)。
請(qǐng)注意,在某些情況下,你可能正在運(yùn)行像 sudo rm -rf /var/log/apt
這樣的命令,這可能是沒問題的。同樣,你必須注意你正在刪除的東西,就像你必須注意你正在用刀切割的東西一樣。
我在玩火:如果我運(yùn)行 sudo rm -rf /,看看會(huì)發(fā)生什么呢?
大多數(shù) Linux 發(fā)行版都提供了一個(gè)故障安全保護(hù),防止意外刪除根目錄。
$ sudo rm -rf /
[sudo] password for abhishek:
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
我的意思是,人是會(huì)打錯(cuò)字的,如果你不小心打了 / var/log/apt
,而不是 /var/log/apt
(/
和 var
之間的空格意味著你給出了 /
和 var
目錄來刪除),你將會(huì)刪除根目錄。(LCTT 譯注:我真干過,鍵盤敲的飛起,結(jié)果多敲了一個(gè)空格,然后就丟了半個(gè)文件系統(tǒng) —— 那時(shí)候 Linux 還沒這種故障安全保護(hù)。)
使用 sudo rm -rf 時(shí)要注意
別擔(dān)心。你的 Linux 系統(tǒng)會(huì)照顧到這種意外。
現(xiàn)在,如果你一心想用 sudo rm -rf /
來破壞你的系統(tǒng)呢?你將必須使用它將要求你使用的 -no-preserve-root
選項(xiàng)與之配合。
不,請(qǐng)不要自己這樣做。讓我做給你看看。
所以,我在一個(gè)虛擬機(jī)中運(yùn)行基本的操作系統(tǒng)。我運(yùn)行 sudo rm -rf / --no-preserve-root
,你可以在下面的視頻中看到燈光熄滅(大約 1 分鐘)。
清楚了么?
Linux 有一個(gè)活躍的社區(qū),大多數(shù)人都會(huì)幫助新用戶。 之所以說是大多數(shù),是是因?yàn)橛幸恍┑男皭簤娜藵摲鴵v亂新用戶。他們經(jīng)常會(huì)建議對(duì)初學(xué)者所面臨的最簡(jiǎn)單的問題運(yùn)行 rm -rf /
。我認(rèn)為這些白癡在這種邪惡行為中得到了某種至上主義的滿足。我會(huì)立即將他們從我管理的論壇和群組中踢出去。
我希望這篇文章能讓你更清楚地了解這些情況。你有可能仍然有一些困惑,特別是因?yàn)樗婕暗礁夸?、文件?quán)限和其他新用戶可能不熟悉的東西。如果是這樣的話,請(qǐng)?jiān)谠u(píng)論區(qū)告訴我你的疑惑,我會(huì)盡力去解決。
最后,請(qǐng)記住。不要喝酒胡搞。在運(yùn)行你的 Linux 系統(tǒng)時(shí)要安全駕駛。