Linuxコマンド shred(ファイルを完全に削除する)

指定したファイルにランダムデータを繰り返し上書きすることによって、データを復旧を困難にし削除するshredコマンドの解説

RHEL Fedora CentOS Ubuntu

参考サイト:Man page of INSTALL

使用方法

指定されたファイルにランダムなデータを繰り返し上書きすることで、データを復旧できないように削除します。ただし、ファイルシステムによってはshredが効果的であるか保証はされていません。

警告: shred は非常に重要な仮定に基づいていることに注意してください。 ファイルシステムはデータが存在する場所に上書きするということです。これ は伝統的な方法ですが、近年設計された多くのファイルシステムではこの仮定 は満たされません。下記に挙げるのは shred があまり効果的では無いか、全て のモードで shred が効果的であることを保証できないファイルシステムの例です。
* ログ構造またはジャーナリングファイルシステム。AIX や Solaris (および JFS,

ReiserFS, XFS, Ext3 など) で提供されている
* 冗長データを書き込み、数回の書き込み失敗が発生しても使用を続けられるファイル

システム。RAID ベースのファイルシステムなど
* Network Appliance の NFS サーバなどスナップショットを作成するファイルシステム
* 一時領域にキャッシュを作成するファイルシステム。 NFS バージョン 3

クライアントなど
* 圧縮ファイルシステム
ext3 ファイルシステムの場合は、上記の制限事項 (および shred の効果が限定的 になってしまうこと) は data=journal モードの時のみ発生します。このときは メタデータに加えてファイルデータもジャーナルが行われます。 data=ordered (デフォルト) および data=writeback モードの場合、shred は通常通り動作します。 ext3 のジャーナルモードは mount のオプションに data=… オプションを与える ことによって変更されます。ファイルシステムのオプションは /etc/fstab ファイル に記述されます。詳細はマニュアル (man mount) に記述されています。
加えて、ファイルシステムのバックアップおよびリモートミラーに削除できない ファイルのコピーが含まれている場合があります。これにより shred したファイル が後で復元できるかもしれません。

ディスク上のファイルは、上書きされるまで消えません。復旧ツールを使用すると復元することができます。shredコマンドを使用するとHDD等を破棄するとき、機密情報の流出防止などに役立ちます。

書式

$ shred [オプション] ファイル名
-f,
–force
必要があればパーミッション
-n 回数,
–iterations=回数
指定した回数だけ上書きする(デフォルトは3回)
-s バイト,
–size=バイト
指定したバイトのみシュレッドする(単位にはK、M、Gを利用する)
–randam-source=ファイル名乱数を指定したファイルから取得する
-u,
–remove
ファイルを削除し、ファイル名を難読化し、syncを実施して切り詰める
-x,
–exact
ファイルサイズを変更しない(ファイルは残る)
-z,
–zero
上書き後に0でさらに上書きする
-v,
–verbose
進捗を表示する。
オプション一覧

サンプル

$ shred sample.txt

実行結果

[centos@ work]$ ls -l sample1.txt 
-rw-rw-r-- 1 centos centos 5 Apr 16 21:02 sample1.txt
[centos@ work]$ shred sample1.txt 
[centos@ work]$ ls -l sample1.txt 
-rw-rw-r-- 1 centos centos 4096 Apr 16 21:04 sample1.txt
[centos@ work]$ 

ファイルを破壊後に削除する

サンプル

$ shred -u sample1.txt

実行結果

[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 5 Apr 16 21:06 sample1.txt
drwxrwxr-x 2 centos centos 6 Apr 15 23:45 tmp

[centos@ work]$ shred -u sample1.txt
[centos@ work]$ ls -l
total 0
drwxrwxr-x 2 centos centos 6 Apr 15 23:45 tmp
[centos@ work]$ 

ファイルサイズを変えないで破壊する。

shredコマンドでファイルを破壊すると、ファイルサイズが変わるが「-x」オプションを使用することでファイルサイズを変えないことができる。

サンプル

$ shred -x sample1.txt

実行結果


[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 5 Apr 16 21:10 sample1.txt
drwxrwxr-x 2 centos centos 6 Apr 15 23:45 tmp
[centos@ work]$ shred -x sample1.txt 
[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 5 Apr 16 21:10 sample1.txt    ←ファイルサイズが変わっていない
drwxrwxr-x 2 centos centos 6 Apr 15 23:45 tmp
[centos@ work]$ 

上書きする回数を指定してファイルを破壊する

ランダムな文字列を引数で指定した回数上書きしてファイルを破壊する。

サンプル

ランダムな文字列を5回上書きする

$ shred -n 5 sample1.txt

実行結果


[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 5 Apr 16 21:19 sample1.txt
drwxrwxr-x 2 centos centos 6 Apr 15 23:45 tmp
[centos@ work]$ shred -n 5  sample1.txt 
[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 4096 Apr 16 21:20 sample1.txt
drwxrwxr-x 2 centos centos    6 Apr 15 23:45 tmp
[centos@ work]$ 

ファイル上書き後にさらに0で上書きしてファイルを破壊する。

サンプル

$ shred -z sample1.txt

実行結果

[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 10 Apr 16 21:23 sample1.txt
drwxrwxr-x 2 centos centos  6 Apr 15 23:45 tmp
[centos@ work]$ shred -z sample1.txt 
[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 4096 Apr 16 21:25 sample1.txt
drwxrwxr-x 2 centos centos    6 Apr 15 23:45 tmp

[centos@ work]$ less sample1.txt  
"sample1.txt" may be a binary file.  See it anyway?   ←バイナリファイルになっている。