こんにちは、ディーネットの山田です。
さて、今回はLinux上にあるファイルを安全に削除する方法をご紹介したいと思います。
目次
まず、普通にファイルを削除しただけならどうなるの?
消したはずのファイルがデータ復旧業者やextundeleteなどのソフトによって取り出されてしまう恐れがあります。
その為、削除してから廃棄したはずの機器等から顧客データが流出なんてこともありえる話です。
では、安全な削除って何なの?
rmコマンドでファイルを削除しただけでは、OSから見えなくなっただけでストレージ上には実体が残っていることがあります。
その為、srmコマンドを使ってダミーデータの複数回上書きを行った後ファイル削除するといったことが可能です。
※shredというコマンドが有名ですが、srmの方がディレクトリ配下を再帰的に削除してくれます。
実際にインストールしてみます
OS環境やアーキテクチャは以下の通り
# cat /etc/redhat-release
CentOS release 6.9 (Final)
# uname -m
x86_64
epelをインストール
srmコマンドは、epel上で公開されているのでepelをインストールする必要があります。
# rpm -ivh "http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"
srmをインストール
# yum install --enablerepo=epel srm
インストールが完了したら、実際に使ってみます
使おうと思いましたが、まずヘルプを確認
# srm --help
Usage: srm [OPTION]... [FILE]...
Overwrite and remove (unlink) the files. By default use the 35-pass Gutmann
method to overwrite files.
-d, --directory ignored (for compatability with rm(1))
-f, --force ignore nonexistant files, never prompt
-i, --interactive prompt before any removal
-x, --one-file-system do not cross file system boundaries
-s, --simple overwrite with single pass using 0x00 (default)
-P, --openbsd overwrite with three passes like OpenBSD rm
-D, --dod overwrite with 7 US DoD compliant passes
-E, --doe overwrite with 3 US DoE compliant passes
-G, --gutmann overwrite with 35-pass Gutmann method
-C, --rcmp overwrite with Royal Canadian Mounted Police passes
-r, -R, --recursive remove the contents of directories
-v, --verbose explain what is being done
-h, --help display this help and exit
-V, --version display version information and exit
この中で、データ消去方法に関するオプションは次のいずれかを指定できる
-s, --simple overwrite with single pass using 0x00 (default)
-P, --openbsd overwrite with three passes like OpenBSD rm
-D, --dod overwrite with 7 US DoD compliant passes
-E, --doe overwrite with 3 US DoE compliant passes
-G, --gutmann overwrite with 35-pass Gutmann method
-C, --rcmp overwrite with Royal Canadian Mounted Police passes
デフォルトは、ゼロ埋めが使われるようだが安全性を重視する方は、EオプションやDオプションを付けるとよいだろう。
また、特定のディレクトリ配下にある全てのファイルに対して行う場合はRオプションを付けるとよいだろう。
コマンド例
ゼロ埋めの削除方式でファイルを完全削除する場合
# srm testfile
3 US DoEの削除方式でディレクトリごと完全削除する場合
# srm -E -R hogedir/
7 US DoDの削除方式でディレクトリごと完全削除する場合
# srm -D -R 7 hogedir/
最後に
ファイルの安全な削除は、復元されないことを目的としたものになりますので、誤って削除してしまうと取り戻すことは非常に困難となりますので、注意が必要です。
※通常の削除でも取り戻すことは比較的困難なので、通常の削除=取り戻し可能とはならないですよ。