刪除不可寫文件時的rm提示
這是關於 GNU
rm
的。資訊頁面說:否則,如果一個文件是不可寫的,標準輸入是一個終端,並且沒有給出or選項,或者給出了
-f
or選項,提示使用者是否刪除該文件。如果響應不是肯定的,則跳過該文件。--force``-i``--interactive=always``rm
- 這只是 GNU 嗎?
- 以 root 身份使用時
rm
,這不會在我的系統上發生。這是正常行為嗎?我在任何地方都找不到它的記錄。- 這種行為的理由是什麼?它只會增加使用者的困惑,他們傾向於認為您需要對文件具有寫入權限才能刪除它。這讓他們認為
rm
chmods 文件。但rm
如果不是所有者,也可以刪除文件。
既然你問了三個不同的問題,我將分別回答。
你的第一個問題:
這只是 GNU 嗎?
我不確定它是否只是GNU。它似乎是 GNU Coreutils 的一個特性,
rm
至少在其他一些rm
文件中也可以找到它。例如,根據opengroup.org上針對 POSIX的一些舊文件rm
:
- 如果file不是directory類型,沒有指定-f選項,或者file的權限不允許寫入並且標準輸入是終端或者指定了-i選項,rm應該寫一個標準錯誤提示並從標準輸入中讀取一行。如果響應不是肯定的,則 rm 將不再對目前文件執行任何操作並繼續處理任何剩餘的文件。
聽起來有點熟?
rm
它的措辭與您在問題中提到的 GNU 文件非常接近。你的第二個問題:
當使用 rm 作為 root 時,這不會在我的系統上發生。這是正常行為嗎?我在任何地方都找不到它的記錄。
如果您的意思是
rm
在嘗試刪除“不可寫文件”時沒有提示以 root 身份執行,那麼是的,這是 GNU Coreutils 8.23(可能幾乎所有其他版本的 GNU Coreutils)的正常行為。似乎沒有任何文件,但是如果您深入研究原始碼rm
(您必須在幾個文件之間跳轉以將它們拼湊在一起),它表明rm somefile
以 root 使用者身份從終端執行將刪除somefile
而無需一個提示,即使它是 write protected。你的第三個問題:
這種行為的理由是什麼?它只會增加使用者的困惑,他們傾向於認為您需要對文件具有寫入權限才能刪除它。這讓他們認為 rm chmods 文件。但是如果不是所有者,rm 也可以刪除該文件。
如果您的意思是為什麼使用者可以刪除他們不擁有的防寫文件,那麼該行為與文件系統權限的關係較少,
rm
而與文件系統權限有關。請參閱linuxdevcenter.com、cyberciti.biz和Wikipedia,它們共同聲明(或多或少):通常,在大多數文件系統上,刪除文件需要對父目錄具有寫權限(以及執行權限,以便首先進入該目錄),但您不需要對文件本身俱有權限。 **請注意,令初學者感到困惑的是,文件本身的權限是無關緊要的。**但是,GNU rm 要求確認是否要刪除防寫文件,除非使用了 -f 選項。
大膽的強調是我的。這就是 Linux 和其他類 Unix 作業系統根據文件權限處理文件刪除的方式。