web-dev-qa-db-ja.com

不変の暗号化ファイルを削除するにはどうすればよいですか?

私は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

したがって、ファイルは不変であり、暗号化のために属性を変更できないため、ファイルを削除できないと思います。助言がありますか?


編集:

私は以下を試しましたが、機能しません:

  1. ライブUSBからのファイルの削除/変更。同じエラーが発生します。
  2. Ángelが提案したように、encrypt機能を削除してから試してください。 fsckも、何らかの理由でエラーをスローしません。

findmnttestdirには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
2
tstsr

ファイルシステムをマウント解除すると、debugfs -w -R "rm path_to_file" /dev/sda1を使用してファイルを削除できるようになります。

1
LustreOne

最も簡単な方法は、そこで新しいext4パーティションをフォーマットして、最初からやり直すことです。しかし、それはあなたにとって都合が悪いかもしれないことを理解しています。

パーティションが/ dev/sda1にあると仮定して、ファイルシステムがマウントされていないときに実行してみます。

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

Debugfsコマンドはext4ファイルシステムから暗号化機能を削除します。次のfsckはすべての暗号化されたディレクトリをエラーとして検出し、うまくいけばそれらを削除することを提案します。それらが削除されなくても、暗号化フラグがなくなる(そして内容がゴミになる)と予想されるので、不変にすることができ、通常の方法で削除できるはずです。

1
Ángel