我正在尝试在 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
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
最简单的方法是在那里格式化一个新的 ext4 分区并重新开始。但是,我知道这对您来说可能不方便。
假设分区在 /dev/sda1 上,我会尝试在未安装文件系统的情况下进行操作:
debugfs 命令将从 ext4 文件系统中删除加密功能,并且以下 fsck 应将所有加密目录检测为错误,并希望将其删除。即使它们没有被删除,我希望加密标志会消失(并且内容是垃圾),所以你应该能够使不可改变并删除正常的方式。
卸载文件系统后,您应该可以使用
debugfs -w -R "rm path_to_file" /dev/sda1
删除文件。