機密情報を含むファイルがある場合、単に rm コマンドで削除したり、Delete キーを押したりするだけでは不十分な場合があります。 rm コマンドでファイルを削除すると、通常はディレクトリから削除されるだけです。削除されたファイルはディスクに残り、必要なスキルを持つ攻撃者によって復元され、悪用される可能性があります。
Linux では、shred コマンドを使用して、意味不明なデータでファイルを繰り返し上書きすることにより、ファイルを安全に削除できます。これにより、削除されたファイルが復元されたとしても、元のデータの復元が非常に困難またはほぼ不可能になります。 Shred コマンドは、ファイルを上書きするだけでなく、指定されている場合は削除します。パーティションまたはディスク全体を上書きするためにも使用できます。
この記事では、Debian 11 で shred コマンドを使用してファイルを安全に削除する方法について説明します。他の Debian および Ubuntu バージョンでも同じ手順を使用できます。また、いくつかのコマンド ライン オプションについても説明しました。
Shred コマンドの操作
Shred コマンドは GNU Core Utilities の 1 つで、Debian を含むほぼすべての Linux システムで使用できます。 shred コマンドの使用方法を見てみましょう:
Shred コマンドの構文
以下は shred コマンドの構文です:
$ shred オプション
ここで、「FILE」はファイルまたは任意のハードディスク パーティションです。
オプションなしで shred コマンドを使用すると、意味不明なデータでファイルが複数回上書きされます。 shred コマンドの機能を理解するために、テキストを含む「testfile.txt」という名前のテスト ファイルを作成してみましょう。
$ echo “this file contains some sample text” > testfile.txt
サンプル ファイルは次のようになります。
ファイルを作成したら、ファイルのサイズも確認してください。後でこれを使用して、細断処理されたファイルのサイズと比較します。
$ ls -l testfile.txt
ここで shred コマンド (コマンド ライン オプションなし) を実行し、その後に細断処理するファイル名を指定します。
$ shred testfile.txt
上記のコマンドは testfile.txt を上書きします 3 回 (デフォルト)。テスト ファイルに何が起こったのかを確認するには、cat コマンドを呼び出します。
$ cat testfile.txt
cat コマンドの出力から、ファイル内の意味不明な部分のみが表示されます。
また、ファイル サイズを表示すると、サイズが大きくなっていることがわかります。
Shred コマンド ライン オプション
shred コマンドには、その機能を拡張できるいくつかのコマンド ライン オプションがあります。これらのオプションがどのように機能するかの例をいくつか見てみましょう。
詳細出力
-v または –verbose オプションを使用すると、バックグラウンドで何が起こっているかを表示できます。
$ shred -v testfile.txt
次の出力は、ファイルを乱数で上書きする 3 つのパスを示しています。
注:次のすべての例では、出力を表示するために -v オプションを使用します。
複数のファイルを上書き
複数のファイルがある場合は、個別のコマンドを使用してファイルを 1 つずつ細断処理する代わりに、1 つのコマンドを使用してそれらを細断処理できます。複数のファイルを細断処理するには、それらすべてを引数として (スペースで区切って) 入力するか、ワイルドカード文字を使用して同じ拡張子を持つすべてのファイルを指定します。
$ shred -v testfile1.txt testfile2.txt testfile3.txt
次のスクリーンショットに示すように、3 つのファイルすべてが 1 つのプロセスで細断処理されます。
ドライブの上書き
shred コマンドを使用して、ドライブとパーティションを上書きすることもできます。たとえば、/dev/sda2 上のすべてのデータを上書きするには パーティションの場合、コマンドは次のようになります:
$ sudo shred -v /dev/sda2
ゼロで上書き
通常、shred コマンドはファイルをランダム データで上書きします。ただし、このデバイスでシュレッディング操作が実行されたことは、システム上で目立ちます。 shred コマンドで -z または –zero オプションを使用して、シュレッディング プロセスを非表示にすることができます。
-z または –zero オプションを指定して shred コマンドを使用すると、最初にファイルが乱数で上書きされ、次に最終的にゼロで上書きされます。
$ shred -vz testfile.txt
上記の出力では、ファイルを乱数で 3 回上書きした後、最終的にシュレッドがファイルをゼロで上書きしたことがわかります。
選択的に上書き
shred コマンドは、ファイルをランダムなジャンクで 3 回上書きします。上書きパスの数を増やすには、-n または –iterations オプションを使用します。
たとえば、testfile.txt をシュレッドするには 5 回の上書きパスを使用する場合、コマンドは次のようになります:
$ shred -vn5 testfile.txt
最初の x バイトのみを上書き
shred コマンドのデフォルトの動作は、ファイル全体を上書きすることです。 -s または –size オプションを shred コマンドで使用すると、最初の x バイトだけを上書きできます。たとえば、testfile.txt の最初の 6 バイトだけを上書きするには 、コマンドは次のようになります:
$ shred -vs6 testfile.txt
上記のコマンドは、指定されたファイルの最初の 6 バイトのみを上書きします。 cat コマンドを呼び出すことで確認できます。
上書き後にファイルを削除
前述のように、shred コマンドは、コマンド ライン オプションを指定せずに使用した場合にのみ、ファイルを上書きします。ただし、上書き後、shred コマンドで -u または –remove オプションを使用してファイルを削除することもできます。削除前にファイルの名前も変更されることに注意してください。
$ shred -vu testfile.txt
上記の出力から、ファイルが上書きされて名前が変更された後、最終的に削除されたことがわかります。
ヘルプを見る
shred コマンドの詳細については、–help オプションを使用するか、man ページにアクセスしてください:
$ shred --help
または
$ man shred
この記事では、さまざまなコマンド ライン オプションと共に Debian で shred コマンドを使用する方法を学びました。 shred コマンドがどのようにファイルを上書きおよび削除し、回復ツールを使用してもファイルを回復するのが困難になるかを見てきました。