Linux

為什麼我不能以 root 身份刪除此文件?

  • December 21, 2017

我有目錄考試,裡面有 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 屬性。如果aori屬性打開,您需要刪除它 ( chattr -a -i . exam_a) 才能刪除文件;只有 root 可以做到這一點。Root不能繞過這些屬性來刪除文件,必須先關閉這些屬性。

阻止文件被刪除的另一件事是文件系統是否以只讀方式安裝,但在這種情況下您會收到不同的錯誤消息。

引用自:https://unix.stackexchange.com/questions/206594