私はext4ファイルシステムで暗号化を実験していて、(chattr +i
を介して)不変に設定されたファイルを(fscrypt
を使用して)暗号化しました。暗号化キーを紛失し、fscrypt
をアンインストールしました。
ファイルを削除したいのですが、削除しようとすると次のエラーが発生します。
# rm foo
rm: cannot remove 'foo': Operation not permitted
そしてそれを可変にしようとすると:
# chattr -i foo
chattr: Required key not available while reading flags on foo
したがって、ファイルは不変であり、暗号化のために属性を変更できないため、ファイルを削除できないと思います。助言がありますか?
私は以下を試しましたが、機能しません:
encrypt
機能を削除してから試してください。 fsck
も、何らかの理由でエラーをスローしません。findmnt
(testdir
には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はすべての暗号化されたディレクトリをエラーとして検出し、うまくいけばそれらを削除することを提案します。それらが削除されなくても、暗号化フラグがなくなる(そして内容がゴミになる)と予想されるので、不変にすることができ、通常の方法で削除できるはずです。