Linuxでファイルやディスクの中身を完全に消去する

by Giuliagas


大事なファイルを削除したいときやディスクを廃棄・譲渡する時などは、データを完全に消去したいものです。

正直、プロではないので、データ復旧の詳細は詳しくありませんが、rmコマンドでデータを消去してもddコマンド等でデバイスを吸い出して、細かく解析していけば(あまり断片化されていなければ)データは復旧できるかもしれません。


そんなときは、"shred"コマンドが使えるようです。

"shred"を使うと、データの内容を特別なパターンで繰り返し上書きを行い、論理的に破壊することが可能です。


"shred"はGNUのcoreutilsに含まれているコマンドで、おそらくLinuxであれば何もインストールせずとも使えるコマンドかと思います。

尚、"shred"を利用してのディスク廃棄などは、自己責任でお願いします。


さて、"shred"の使い方は、、、

$ shred -u hoge.txt

な感じで、-uオプションの後にファイル名を指定します。

ちなみに、-uオプションをつけない場合は、指定したファイルは残りますが、特別なパターンで上書きされ破壊された状態になります。


ディスクやパーティションをまるごと消去したい場合は、、、

# shred -n 3 -v -z /dev/hdb

な感じで、デバイス名を指定して実行します。

上の例では、-nオプションで3を指定することで、3回繰り返して特別パターンの書き込みを実施、-vオプションで進捗状況を表示、-zオプションで、全体に0を書き込みゼロクリアを行います。

ちなみに、-nオプションを省略するとデフォルトである25回の書き込みが実施されます。時間に余裕のある場合は、多くの回数を実施すべきです。


PC自体を完全に廃棄する(マシンに1台しかハードディスクが付いていない場合)ときなどは、KNOPPIXなどCDのみで動作(Live-CD)するLinuxを使って、CDからOSブートして"shred"コマンドを利用すると良いかと思います。

余談

一方、Linux上で誤って消去してしまった場合、ツールを使った復旧方法についてのリンクを紹介しておきます。
場合によっては、lsofコマンドやmcコマンドが使えるかもしれません。

shredコマンドのオプション一覧

-f, --force
       change permissions to allow writing if necessary

-n, --iterations=N
       Overwrite N times instead of the default (25)

--random-source=FILE
       get random bytes from FILE (default /dev/urandom)

-s, --size=N
       shred this many bytes (suffixes like K, M, G accepted)

-u, --remove
       truncate and remove file after overwriting

-v, --verbose
       show progress

-x, --exact
       do not round file sizes up to the next full block;

       this is the default for non-regular files

-z, --zero
       add a final overwrite with zeros to hide shredding

--help display this help and exit

--version
       output version information and exit


Linuxセキュリティクックブック―システム防御のためのレシピ集

Linuxセキュリティクックブック―システム防御のためのレシピ集

  • 作者: ダニエル・J.バレット,ロバート・G.バイネス,リチャード・E.シルバーマン,Daniel J. Barrett,Robert G. Byrnes,Richard E. Silverman,天木健介,小幡昇,西原啓輔,伊藤真浩,高杉昌督
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2003/11
  • メディア: 単行本
  • 購入: 1人 クリック: 6回
  • この商品を含むブログ (7件) を見る