Ext4

如何刪除不可變的加密文件?

  • January 13, 2020

我正在嘗試在 ext4 文件系統上進行加密,並加密了一個文件(使用fscrypt),該文件被設置為不可變(通過chattr +i)。我現在失去了加密密鑰並解除安裝了fscrypt.

我想刪除該文件,但是當我嘗試刪除它時,出現以下錯誤:

# rm foo
rm: cannot remove 'foo': Operation not permitted

當我嘗試使其可變時:

# chattr -i foo
chattr: Required key not available while reading flags on foo

因此,我相信我無法刪除該文件,因為它是不可變的,並且由於加密,我無法更改其屬性。有什麼建議麼?


編輯:

我嘗試了以下方法,但它們不起作用:

  1. 從 Live USB 刪除/修改文件。發生同樣的錯誤。
  2. encrypt按照 Ángel 的建議,在刪除該功能後嘗試。fsck由於某種原因也不會拋出任何錯誤。

findmnt( testdircontains foo) 和文件系統屬性的輸出:

$ findmnt --target testdir
TARGET SOURCE    FSTYPE OPTIONS
/      /dev/sda4 ext4   rw,relatime

# tune2fs -l /dev/sda4 | grep "Filesystem features"
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum

解除安裝文件系統後,您應該可以使用debugfs -w -R "rm path_to_file" /dev/sda1刪除文件。

最簡單的方法是在那里格式化一個新的 ext4 分區並重新開始。但是,我知道這對您來說可能不方便。

假設分區在 /dev/sda1 上,我會嘗試在未安裝文件系統的情況下進行操作:

debugfs -w -R "feature -encrypt" /dev/sda1
fsck.ext4 /dev/sda1

debugfs 命令將從 ext4 文件系統中刪除加密功能,並且以下 fsck 應將所有加密目錄檢測為錯誤,並希望將其刪除。即使它們沒有被刪除,我希望加密標誌會消失(並且內容是垃圾),所以你應該能夠使不可改變並刪除正常的方式。

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