Linuxコマンドshredの使い方と4つのオプション

この記事では、Linuxコマンドshredの使い方と主要なオプションについて解説し、活用できる便利なヒントを共有します。Linux環境でファイルを削除することは一般的な作業の一つです。しかし、単にファイルを削除しただけでは、その内容が完全に消えるわけではありません。削除されたファイルは実際にはファイルシステムに痕跡が残っており、データ復旧ツールを使用すれば再び復元することが可能です。このような問題を防ぐためにshredというコマンドを使用します。

shredコマンドとは?

shredは、ファイルを単に削除するだけでなく、そのファイルのデータを複数回上書きして復元できないようにするコマンドです。これは、ファイルの内容を任意のデータで複数回上書きした後にファイルを削除するか、または単に上書きするだけの方法で実行されます。

shredコマンドの基本的な使い方

最も基本的なshredコマンドの使い方は次のとおりです。

shred ファイル名
ShellScript

このコマンドは、指定したファイルのデータを複数回上書きした後、ファイルをそのまま保持します。ファイルは削除されないため、shredだけではファイルの痕跡を完全に消去することはできません。この場合、ファイルを削除するためには追加のコマンドが必要になることがあります。

下の図は、shredコマンドを使用して任意の値が上書きされたもので、最初の100バイトのみを表示したものです。

図1. Linuxコマンドshred: 実行してファイル内容を上書き
図1. Linuxコマンドshred: 実行してファイル内容を上書き

shredコマンドの主要オプション

-nまたは–iterationsオプション

このオプションは、ファイルを上書きする回数を指定します。基本的にshredはファイルを3回上書きしますが、-nオプションを使用してこれを調整することができます。

shred -n 5 ファイル名
ShellScript

上記のコマンドは、ファイルを5回上書きします。上書き回数が多いほど、ファイルを復元することが難しくなります。

-zまたは–zeroオプション: ファイル内容を0で埋める

ファイルを上書きした後、最後にファイルを0で上書きしてファイルの内容をさらに安全に隠します。これは、ファイルがランダムなデータで上書きされた後も、単純に0で上書きされているため、誰かがファイルを確認した際に、ファイルが上書きされたことに気付かれないようにします。

shred -z ファイル名
ShellScript

ファイルのサイズは4096バイトですが、catコマンドで中身を確認しようとすると何も表示されないことが確認できます。

図2. Linuxコマンドshred: ファイル内容を0で埋めた場合
図2. Linuxコマンドshred: ファイル内容を0で埋めた場合

さらに、xxdコマンドを使用してそのファイルの内容を16進値の形式で確認すると、すべてが0で埋められていることが確認できます。

図3. Linuxコマンドshred: ファイル内容を0で埋めた場合をxxdコマンドで確認
図3. Linuxコマンドshred: ファイル内容を0で埋めた場合をxxdコマンドで確認

-uまたは–removeオプション

このオプションは、上書きが完了した後にファイルを削除します。よく使用されるオプションであり、ファイルを完全に削除したい場合に便利です。

shred -u ファイル名
ShellScript

上記のコマンドを使用すると、ファイルが上書きされた後、自動的に削除されます。これは、ファイルシステムからファイルを復元する可能性をさらに減らします。

-vまたは–verboseオプション

コマンドの実行過程を画面に表示し、現在の進行状況を確認できます。ファイルが複数回上書きされる過程を確認したいときに使用されます。

shred -v ファイル名
ShellScript

下の図を見ると、最初は任意の値で埋め、その次はすべての値を1で埋め、再び任意の値で埋め、すべての値を0で埋めた後、最後に再び任意の値で埋めることが確認できます。

図4. Linuxコマンドshred: ファイル内容を埋める順序と過程を確認
図4. Linuxコマンドshred: ファイル内容を埋める順序と過程を確認

shred使用時の注意点

shredコマンドを使用する際に、いくつか注意すべき点があります。

  • ファイルシステムの種類: shredコマンドは、すべてのファイルシステムで同じように機能しない場合があります。例えば、ジャーナリングファイルシステムやSSDなどの一部のディスクでは、上書きの効果が低下することがあります。これは、ファイルが物理的に同じ場所に保存されないためです。このような場合、追加のセキュリティ対策を検討する必要があります。
  • ファイルサイズ: 大きなファイルを上書きする際には、時間がかかることがあります。特に複数回の上書きを行う場合、ファイルサイズに比例して時間が増加するため、時間が重要な場合は上書き回数を調整することが望ましいです。
  • ディレクトリの削除: shredはディレクトリ自体を削除することはできません。ディレクトリ内のファイルを個別に削除する必要があります。この場合、ディレクトリ内のすべてのファイルを一度に削除するために、別途スクリプトを使用するか、そのディレクトリで全ファイルを対象にコマンドを適用する必要があります。

有用な活用方法

自動化スクリプトに使用

shredコマンドを自動化スクリプトに組み込んで、定期的に機密データを削除するのに活用できます。例えば、ログファイルや一時ファイルを定期的に安全に削除するスクリプトを作成して、データ漏洩の可能性を減らすことができます。

復元防止

重要なプロジェクトファイルや顧客情報が含まれたファイルを削除する際に、shredを使用して復元防止を徹底することができます。これは、社内のセキュリティを向上させる上で重要な役割を果たします。

外付けディスク管理

外付けハードディスクやUSBドライブにあるデータを完全に削除して再利用する際に、shredを使用すれば、安全にデータを削除できます。特に、外部に持ち出されるドライブの場合、重要なデータを確実に削除することが重要です。

まとめ

shredコマンドは、Linux環境でファイルを単に削除する以上のセキュリティ機能を提供します。上書きを通じてファイルの復元可能性を最小限に抑え、オプションを適切に使用してさまざまな状況に応じてデータを安全に管理することができます。しかし、すべてのファイルシステムで完璧な結果を保証するわけではないため、状況に応じて適切な追加措置を講じることが重要です。特に、重要なデータを扱う場合は、shredコマンドを活用してデータセキュリティを強化することをお勧めします。

リファレンス

関連ポスト

コメントする