ファイルハッシュを変更するカーネルレベルのパススルー方式

ファイルハッシュを変更するカーネルレベルのパススルー方式

私は、パススルーで、ファイルの内容を暗号化するか、データを追加することでファイル ハッシュを変更するカーネル レベルのメカニズムを探しています。最も明白な解決策は暗号化ですが、適切な (たとえば、完全にカーネルのみ、ecryptfs なし、FUSE 対応なしなど) 暗号化方法が見つかりません。

具体的には、ファイルの元のMD5を難読化する方法で/foo表示したいファイルが多数あります。/foobarそれなし生のデータを複製します。追加によってファイルが/foobar役に立たなくなるかどうかは気にしていません。各ファイルにランダムなバイトをいくつか追加して、多くのファイル形式を壊してもかまいませんが、何らかのバインドマウントでこれを行う方法がわかりません。

答え1

カスタムファイルシステムオーバーレイを探しているなら、FUSEが正しい選択です。FUSEを使用して書かれたカスタムファイルシステムは様々あります(sshfs、ntfs-3g、wikipediafsなど)。その中には次のようなシンプルなオーバーレイもあります。バインド

bindfs のソース コードを取得して、読み取り操作を処理するたびに最初のバイトとランダム データとの XOR 演算を実行するように変更することができます。

純粋なカーネル オプションの場合、同様の方法でoverlayfsまたはドライバーを変更できます。unionfs

別の方法としては、Samba を使用し、ファイルを破損する Samba vfs モジュールを作成し、ソース ディレクトリを共有し、Linux ドライバーを使用して同じマシンにマウントする方法があります。(ドライバーとデーモン、またはドライバーと何らかの NFS サーバー デーモンをcifs使用しても同じことが可能です。)9pu9fsnfs


内容を気にしない場合は、必要なサイズのスパース ファイルを作成します。スパース ファイルはまったくスペースを占有しません。

$ truncate -s 1G largefile
$ du -h --apparent largefile
1G  largefile
$ du -h largefile
0   largefile

次のようにツリーをループします。

cd /foo
find -type d | while read -r file; do
    mkdir -p "/foobar/$file"
done
find -type f | while read -r file; do
    truncate -r "$file" "/foobar/$file"
done

関連情報