概要
shredはGNU coreutils に含まれるツールで、ファイルやデバイスを指定回数だけ上書きすることで元データの復元を難しくします。単純な削除(rm)ではファイルシステム上のポインタが消えるだけで、データ本体は残るため、復旧ソフトで容易に復元できます。shredは複数パスでランダムデータやゼロで上書きしてこのリスクを下げます。
重要: ハードウェアレベルの物理破壊が要求される機密情報や、特定の政府基準がある場合は、shredだけでは不十分なことがあります。要件に応じて専門の消去サービスや物理破壊を検討してください。
shredとは
shredは次の用途で使えます:
- 個別ファイルの有無にかかわらず上書き消去
- ブロックデバイス(パーティション、ディスク)全体の上書き
manページの注意書き(要約した日本語訳):
注意: shredは「ファイルシステムが上書きでデータを置き換える」ことを前提としています。これは従来のファイルシステムでの動作ですが、近代的な設計の多くはこの前提を満たしません。shredが効果的でない、または全モードで効果が保証されないファイルシステムの例:
* ログ構造化やジャーナリングのファイルシステム(AIX/Solaris付属のもの、JFS、ReiserFS、XFS、Ext3 など)
* RAIDベースのファイルシステムのように冗長データを書き、書き込みが一部失敗しても継続するもの
* スナップショットを取るファイルシステム(NASのNFSサーバなど)
* 一時的な場所へキャッシュするファイルシステム(NFS v3クライアントなど)
* 圧縮ファイルシステム
ext3の場合、data=journalモード(データもジャーナル化する)ではshredの効果は限定されます。data=ordered(デフォルト)やdata=writebackでは通常通り動作します。
この注意はファイル単位でshredを使う場合に特に重要です。パーティションやディスク全体をデバイスとして直接上書きする場合は、上記の多くの制約が適用されにくくなりますが、RAIDやハードウェアキャッシュ、スナップショットには依然として注意が必要です。
基本的な使い方
shredは多くのディストリビューションで coreutils に含まれています。インストール確認:
which shred
Debian/Ubuntu系で未インストールなら:
apt-get install coreutils
パーティション /dev/sda5 を10回上書きする例:
shred -vfz -n 10 /dev/sda5
オプションの意味:
- -v: 進行状況を表示
- -f: 必要なら書き込みできるように権限を変更
- -z: 最後にゼロで上書きして「shred済み」を隠す
- -n N: デフォルトの3回ではなく N 回上書きする
RAID デバイスの例:
shred -vfz -n 10 /dev/md1
ディスク全体の例:
shred -vfz -n 10 /dev/sda
実行時間はディスク容量と -n の値に依存します。SSDでは書き込み特性(ウェアレベリング)により期待通りに動作しないことが多いです。
注意点と制限
- ファイル単位のshredはジャーナリングやコピーオンライト(CoW)ファイルシステムで効果が薄い。代表例: ext3 data=journalモード、btrfs、ZFS、ReiserFS、XFS。
- RAIDやハードウェアキャッシュが介在する環境では、一部のブロックが別の場所に残る可能性がある。
- SSDやフラッシュメディアはウェアレベリングやリザーブ領域があり、上書きで全領域を確実に消去できない。
- スナップショットやバックアップがあると、データは別場所に残る。
重要: 機密データを確実に消去する必要がある場合、媒体の物理破壊や、SSD向けのメーカー提供のATA Secure Erase/NVMe Formatなどハードウェアレベルの消去手段を検討してください。
代替手段と比較
- dd: /dev/zero や /dev/urandom でディスクを上書きする単純な方法。例:
dd if=/dev/urandom of=/dev/sda bs=1M
。shredはランダム上書きを繰り返す点で類似するが、ファイル単位の扱いが異なる。 - ATA Secure Erase: SSD/HDD が備える標準コマンド。フラッシュの全論理ブロックを効率的に消去できる場合がある。
- blkdiscard / hdparm –secure-erase: デバイスの対応によりトリムやセキュアイレースを実行。
- nwipe / DBAN: ブート可能なワイプツール。物理マシン向けの総合的な消去ツール群。
各手段の選び方: メディア種類(HDD vs SSD)、要件(法令準拠かどうか)、時間とコストを基準に決めます。
実践手順チェックリスト
- 重要データのバックアップを確認する。
- システムパーティションを消す場合はライブ環境で起動する(例: Ubuntu Live-CD、Rescue 環境)。
- 対象デバイス名を二重確認する(lsblk, fdisk -l)。誤指定はデータ喪失を招く。
- shred を実行する。例:
shred -vfz -n 10 /dev/sda
。 - 完了後、マウントやファイルシステムチェックを行って必要ならゼロ化で上書き(-z が指定されていない場合)やパーティションの再作成を行う。
- 物理破壊が必要なら専門の手順に従う。
検証と受け入れ基準
- 期待される結果: 対象ディスク上のファイルやパーティションがマウント不能、データが通常の復旧手法で読み取れない。
- 追加確認: 別のシステムでディスクを接続し、ファイル一覧や簡易リカバリツールでスキャンしてデータが検出されないことを確認する。
Критерии приёмки: ディスクの残存データが検出できない、かつ必要であれば管理者が物理破壊を実行済みであること。
よくある失敗例と回避策
誤ったデバイスを指定して実行してしまう。 回避:
lsblk
やudevadm info
でデバイスを明確に確認し、二度確認する。SSDに対してshredを実行したが消去が不完全だった。 回避: ベンダーが提供するSecure EraseやNVMeのフォーマットを検討する。
スナップショットやバックアップを消し忘れる。 回避: ストレージ全体の構成(スナップショット、バックアップ先)を事前に把握する。
短い作業手順(SOP)
- ライブUSBで起動
- 目的のデバイスを確認
- コマンド実行:
shred -vfz -n 10 /dev/sdX
- 終了確認
- 必要なら物理破壊
まとめ
shredは使い勝手が良く、ブロックデバイス全体を対象にした上書き消去に有用です。ただし、ファイルシステムの種類、RAID、SSD固有の挙動、スナップショットやバックアップの存在などにより効果が制限される点に注意してください。高い確実性が必要な場合は、ハードウェアベンダーの消去手順や物理破壊も検討してください。
重要: 実運用で消去要件(法令・規程)がある場合は、それらに従った手順を優先してください。