Linux便利コマンド : shred

うめだ
2025-11-10
2025-11-10
目次

はじめに

みなさま、shredコマンドを活用されていますでしょうか?

データ消去の際、rmコマンドでファイルを削除しても、inodeが解放されただけで、内容自体はディスク上に残っています。

これだけだと、データを取り出すことが可能で、HDDを廃棄する際には注意しないとデータ流出につながりかねません。

そんな時、shredコマンドにて、ランダムなデータを繰り返し上書きすることで、データの復元をより困難にすることができます。

それでは、shredコマンドの使い方をご紹介します。

環境

OS : AlmaLinux 8
shredバージョン : 8.30

使い方

よくやるのは、ディスクデバイスを指定してのshred実行ですが、ファイルを指定することもできるので、試してみましょう。

まずは事前準備から、対象ファイルとなるtestdata.txtを作成しておきます。

$ echo testdata > testdata.txt
$ ls -la testdata.txt
-rw-rw-r-- 1 future future 9 Nov  7 01:44 testdata.txt
$
$ cp -p testdata.txt testdata.txt.org
$
$ ls -la
total 12
drwxrwxr-x  2 future future   50 Nov  7 02:35 .
drwx------ 13 future future 4096 Nov  6 19:10 ..
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt.org
$ md5sum testdata.txt*
73d643ec3f4beb9020eef0beed440ad0  testdata.txt
73d643ec3f4beb9020eef0beed440ad0  testdata.txt.org
$
$ cat testdata.txt
testdata
$

対象ファイルに対して、shredを実行してみます。

上書き回数の指定をしなければ、デフォルトで3回、ランダムなデータで上書きされます。

$ shred testdata.txt

では、ファイルの状態を確認してみましょう。

$ ls -la
total 12
drwxrwxr-x  2 future future   50 Nov  7 02:35 .
drwx------ 13 future future 4096 Nov  6 19:10 ..
-rw-rw-r--  1 future future 4096 Nov  7 02:36 testdata.txt
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt.org
$
$ md5sum testdata.txt*
08706258847fc894dadea2eade709d54  testdata.txt
73d643ec3f4beb9020eef0beed440ad0  testdata.txt.org
$

ファイルサイズが変わっていて、当然チェックサム値も変わっていることが確認できます。

中身は...

$ cat testdata.txt
g
 &赭後跋・・Z絲様J侘g4穡砌


$

よくわからない中身になっていることが確認できます。

オプション:-x を指定することでファイルサイズを変更せずに上書きできるようなので試してみましょう。

$ cp -p testdata.txt.org testdata.txt.2
$ ls -ltr
total 12
-rw-rw-r-- 1 future future    9 Nov  7 01:44 testdata.txt.org
-rw-rw-r-- 1 future future    9 Nov  7 01:44 testdata.txt.2
-rw-rw-r-- 1 future future 4096 Nov  7 02:36 testdata.txt
$
$ shred -x testdata.txt.2
$

では、ファイル:testdata.txt.2 の状態を確認してみましょう。

$ ls -la
total 16
drwxrwxr-x  2 future future   72 Nov  7 02:45 .
drwx------ 13 future future 4096 Nov  6 19:10 ..
-rw-rw-r--  1 future future 4096 Nov  7 02:36 testdata.txt
-rw-rw-r--  1 future future    9 Nov  7 02:46 testdata.txt.2
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt.org
$

元のサイズからは変化なしです。続いてチェックサムを確認。

$ md5sum testdata.txt*
08706258847fc894dadea2eade709d54  testdata.txt
9c5225085b3922ff23917c340e916f0e  testdata.txt.2
73d643ec3f4beb9020eef0beed440ad0  testdata.txt.org
$

こちらは変化ありです。

中身も確認してみましょう。

$ cat testdata.txt.2
ケ       ?・踞タ碆涖゚裝皸跿魄鮱ョ・ イーイオアアーキン、

$

よくわからない中身になっています。


オプション:-u を指定することで、上書き後ファイル自体も削除することができます。

$ ls -la
total 16
drwxrwxr-x  2 future future   72 Nov  7 02:45 .
drwx------ 13 future future 4096 Nov  6 19:10 ..
-rw-rw-r--  1 future future 4096 Nov  7 02:36 testdata.txt
-rw-rw-r--  1 future future    9 Nov  7 02:46 testdata.txt.2
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt.org
$
$ shred -u testdata.txt
$

では確認。

$ ls -la
total 12
drwxrwxr-x  2 future future   52 Nov  7 02:54 .
drwx------ 13 future future 4096 Nov  6 19:10 ..
-rw-rw-r--  1 future future    9 Nov  7 02:46 testdata.txt.2
-rw-rw-r--  1 future future    9 Nov  7 01:44 testdata.txt.org
$

削除されていますね。


HDDに対してデータ消去を実行する場合は、対象ディスクのデバイス名を指定します。

$ shred -n3 -z -v /dev/sdb


オプション:-z は指定回数の上書き後、0でさらに上書きします。
オプション:-v は進捗状況を表示させることができます。

ディスクサイズにもよるかと思いますが、完了までにかなり時間がかかるので、気長に待ちましょう。

まとめ

いかがでしたか?

セキュリティ上、完全なデータ消去を求められることもあると思います。

最終的には物理的な破壊が理想ですが、どうしても物理的な破壊が難しい場合には、shredによるデータの完全消去を是非とも活用ください。