如何删除不可变的加密文件?

如何删除不可变的加密文件?

我正在尝试在 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. 按照 Ángel 的建议,删除该功能后尝试encryptfsck也不会因某种原因抛出任何错误。

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

答案1

卸载文件系统后,您应该能够使用debugfs -w -R "rm path_to_file" /dev/sda1来删除文件。

答案2

最简单的方法是在那里格式化一个新的 ext4 分区并重新开始。但是,我知道这对您来说可能不方便。

假设分区位于 /dev/sda1 上,我会尝试执行 - 当文件系统未安装时 -:

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

debugfs 命令将从 ext4 文件系统中删除加密功能,并且以下 fsck 应该将所有加密目录检测为错误,并希望能够删除它们。即使它们没有被删除,我预计加密标志也会消失(并且内容将成为垃圾),因此您应该能够使其不可变并以正常方式删除。

相关内容