![如何删除不可变的加密文件?](https://linux22.com/image/13441/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E4%B8%8D%E5%8F%AF%E5%8F%98%E7%9A%84%E5%8A%A0%E5%AF%86%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在尝试在 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 中的文件。也会出现同样的错误。
- 按照 Ángel 的建议,删除该功能后尝试
encrypt
。fsck
也不会因某种原因抛出任何错误。
findmnt
( testdir
contains ) 和文件系统属性的输出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 应该将所有加密目录检测为错误,并希望能够删除它们。即使它们没有被删除,我预计加密标志也会消失(并且内容将成为垃圾),因此您应该能够使其不可变并以正常方式删除。