為什麼我不能以 root 身份刪除此文件?
我有目錄考試,裡面有 2 個文件。我需要刪除文件,但權限被拒絕。即使
rm -rf
命令也無法刪除這些文件。我以 root 使用者身份登錄。
從 root 使用者檢查文件的屬性
# lsattr
如果您注意到
i
(immutable) 或a
(append-only),請刪除這些屬性:# man chattr # chattr -i [filename] # chattr -a [filename]
rm
抱怨您無權刪除文件的最常見原因是目錄上的權限禁止您刪除文件。要刪除文件,您需要對該目錄具有寫權限。文件的權限無關緊要(在刪除只讀文件之前rm
沒有提示確認,但這只是確認,而不是限制)。-f
在某些 Unix 變體上,例如 OSX(但不是 Linux),文件上的ACL可以防止其被刪除;ls -l
如果文件上有 ACL 條目,將顯示@
在權限欄位的末尾。以 root 身份訪問會繞過權限,因此即使在只讀目錄中,root 也可以刪除文件。
的輸出在權限列的末尾
ls -l
顯示 a 。.
這表明該文件具有 SELinux 安全上下文。與基本權限和 ACL 不同,文件上的 SELinux 安全上下文可以控制允許誰刪除它。此外,SELinux 不能總是被 root 繞過(可以讓程序以使用者 ID 0 執行,但權限與 SELinux 策略設計者選擇的權限一樣少)。要查看 SELinux 上下文允許您做什麼,請執行ls -lZ . exam_a
.可以防止文件被刪除的另一件事是它或包含它的目錄是否具有 append-only 或 immutable Linux 屬性。執行
lsattr -d . exam_a
以查看 Linux 屬性。如果a
ori
屬性打開,您需要刪除它 (chattr -a -i . exam_a
) 才能刪除文件;只有 root 可以做到這一點。Root不能繞過這些屬性來刪除文件,必須先關閉這些屬性。阻止文件被刪除的另一件事是文件系統是否以只讀方式安裝,但在這種情況下您會收到不同的錯誤消息。