Ext4
如何刪除不可變的加密文件?
我正在嘗試在 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
因此,我相信我無法刪除該文件,因為它是不可變的,並且由於加密,我無法更改其屬性。有什麼建議麼?
編輯:
我嘗試了以下方法,但它們不起作用:
- 從 Live USB 刪除/修改文件。發生同樣的錯誤。
encrypt
按照 Ángel 的建議,在刪除該功能後嘗試。fsck
由於某種原因也不會拋出任何錯誤。
findmnt
(testdir
containsfoo
) 和文件系統屬性的輸出:$ 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 應將所有加密目錄檢測為錯誤,並希望將其刪除。即使它們沒有被刪除,我希望加密標誌會消失(並且內容是垃圾),所以你應該能夠使不可改變並刪除正常的方式。