Permissions
為什麼 rm 可以刪除只讀文件?
如果我創建一個文件,然後將其權限更改為
444
(只讀),怎麼rm
能刪除它?如果我這樣做:
echo test > test.txt chmod 444 test.txt rm test.txt
…
rm
會詢問我是否要刪除防寫文件test.txt
。我本來預計rm
不能刪除這樣的文件,我必須先做一個chmod +w test.txt
。如果我這樣做了,rm -f test.txt
那麼rm
即使它是只讀的,也會在不詢問的情況下刪除該文件。誰能澄清一下?我正在使用 Ubuntu 12.04/bash。
所有
rm
需要的是對父目錄的**寫入+執行權限。**文件本身的權限無關緊要。這是一個參考,它比我以往任何時候都更清楚地解釋了權限模型:
任何訪問文件數據的嘗試都需要讀取權限。任何修改文件數據的嘗試都需要寫入權限。任何執行文件(程序或腳本)的嘗試都需要執行權限…
由於目錄的使用方式與正常文件不同,因此權限的工作方式略有不同(但僅略有不同)。嘗試列出目錄中的文件需要對該目錄的讀取權限,但不需要對其中的文件具有讀取權限。 嘗試將文件添加到目錄、從目錄中刪除文件或重命名文件,都需要目錄的寫權限,但(可能令人驚訝的是)不需要. 執行權限不適用於目錄(目錄也不能是程序)。但是該權限位被用於其他目的的目錄。
目錄需要執行權限才能 cd 進入它(即,使某個目錄成為您目前的工作目錄)。
需要在目錄上執行才能訪問其中文件的“inode”資訊。您需要它來搜尋目錄以讀取其中文件的 inode。因此,對目錄的執行權限通常稱為搜尋權限。