Linuxでファイルを安全に削除する方法
古いデータファイルを古い紙文書をシュレッダーするのと同じ理由でシュレッダーしてください。Linuxファイルを安全に削除するために知っておくべきことをお伝えします。このチュートリアルでは、shred コマンドと secure-delete ユーティリティのスイートについて説明します。
削除されたファイルは通常回復可能です。
ファイルを削除しても、実際にはハードドライブから削除されるわけではありません。これは、ファイルシステムがinodeをどのように使用するかに依存しています。inodeは、ファイルに関するメタデータを保持するファイルシステム内のデータ構造です。ファイルの名前、ハードドライブ上の位置、属性や権限などがすべてinode内に保存されます。ディレクトリは、実際にはファイルに過ぎません。ディレクトリが含むファイルの名前とinode番号を保持しているファイルです。
ファイルを rm で削除すると、ファイルシステムは適切な i-node を解放し、ディレクトリファイルを調整します。これにより、ハードディスク上でそのファイルが占めていたスペースが未使用としてマークされます。図書館に入ってカードインデックスを調べ、本のカタログカードを見つけて破り捨てることを想像してください。本はまだ棚にあります。ただ見つけるのが難しくなっているだけです。
言い換えれば、ファイルによって使用されていたスペースは現在、他のファイルによって使用するために自由になっています。しかし、古いファイルの内容はまだそのスペースに残っています。そのスペースが上書きされるまで、そのファイルが回収される可能性は高いです。
しかし、ファイルを完全に削除することは、単に上書きするだけでは簡単ではありません。これから見ていきましょう。
SSDでこれをしないでください
これらの技術は、従来の電気機械式ハードディスクドライブ(HDD)用であり、ソリッドステートドライブ(SSD)には使用しないでください。うまくいかず、SSDに余分な書き込みと不必要な摩耗を引き起こします。SSDからデータを安全に消去するには、SSDの製造元が提供するユーティリティを使用する必要があります。
シャッドコマンド
shred は、削除されたファイルを回復できないように上書きを行うように設計されています。このツールは、この記事の研究中にテストされたすべてのLinuxディストリビューション、つまりUbuntu、Fedora、Manjaroに含まれています。
この例では、~/research と呼ばれるディレクトリで作業します。このディレクトリには多くのテキストファイルが含まれています。また、他のディレクトリもいくつか含まれており、それには他のファイルも含まれています。これらのファイルは敏感なものであり、ハードドライブから完全に消去しなければならないと仮定します。
ディレクトリツリー構造は、次のコマンドを使用することで見ることができます。
treeコマンドは次のようになります。
-d(ディレクトリ)オプションが引き起こす
treeディレクトリのみをリストし、すべてのファイルをリストしないこと。ディレクトリツリーの構造は次のようになります:
tree -d1つのファイルをシュレッダーにかける
単一のファイルを粉砕するには、次のコマンドを使用できます。私たちが使用しているオプションは次の通りです:
- u: 上書き後にファイルを解放して削除します。
- v: 詳細オプションなので、
shredが何をしているのかを教えてくれます。 - z: 最後にゼロで上書きします。
shred -uvz Preliminary_Notes.txt_01.txt
shredはデフォルトでファイルを4回上書きします。最初の3回はランダムデータを使用し、最後の1回はリクエストした通りにゼロを使用します。その後、ファイルを削除し、inode内の一部のメタデータを上書きします。
上書きパスの数を設定する
shredに対して、-n(数)オプションを使用することで、上書きパスの数を増やしたり減らしたりするように要求できます。shredは常に最低でも1回のパスを使用します。ここで提供する数は、shredに実行させる追加のパスの数です。したがって、shredは常に要求した数に1回のパスを追加で行います。合計で3回のパスを取得するために、追加で2回のパスを要求します:
shred -uvz -n 2 Preliminary_Notes.txt_02.txt予想通り、shredは3回のパスを行います。
パスが少なければ少ないほど---好みで言えばシュレッダー回数も少なくなります---明らかに速くなります。しかし、それは安全性が低くなるのでしょうか?興味深いことに、3回のパスはおそらく十分すぎるほどです。
複数のファイルをシュレッダーにかける
ワイルドカードは shred と共に使用して消去するファイルのグループを選択することができます。 * は複数の文字を、? は単一の文字を表します。このコマンドは現在の作業ディレクトリ内の残りの「Preliminary_Notes」ファイルをすべて削除します。
shred -uvz -n 2 Preliminary_Notes_*.*
残りのファイルは、それぞれ順番にshredによって処理されます。
shredには再帰オプションがないため、ネストされたディレクトリのディレクトリツリーを消去するために使用することはできません。
安全にファイルを削除することの問題
shredがいかに優れていても、問題があります。ext3やext4などの最新のジャーナリングファイルシステムは、破損したり、壊れたり、データが失われないように多大な努力をしています。そして、ジャーナリングファイルシステムでは、上書きが実際に削除されたファイルによって使用されているハードドライブの空間を上書きしているという保証はありません。
もしあなたがファイルが rm よりも少し徹底的に削除されたという安心感を求めているだけなら、shred はおそらく問題ありません。しかし、データが確実に消えて完全に回復不可能だと思い込むという間違いをしないでください。それはおそらくそうではないかもしれません。
セキュア削除スイート
secure-delete コマンドは、ジャーナリングファイルシステムの最善の努力を克服し、ファイルを安全に上書きすることを試みます。しかし、全く同じ注意点が適用されます。上書きが実際に削除してほしいファイルが存在するハードドライブの領域に行われることが保証されているわけではありません。より高い可能性はありますが、保証はありません。
このsecure-deleteコマンドは、以下の上書きとアクションのシーケンスを使用します。
- 0xFFの値のバイトで1を上書きします。
- ランダムデータで5回上書きします。
- ピーター・グットマンによって定義された特別な値で27回上書きします。
- ランダムなデータで5回さらに上書きします。
- ファイルの名前をランダムな値に変更してください。
- ファイルを切り詰めてください。
それらすべてが過剰に思えるなら、あなたは良い仲間にいます。オークランド大学の教授であるピーター・グットマンも過剰だと感じています。彼は1996年にこれらの技術について論文を発表し、その論文で議論されたすべての技術を同時に使用する必要があるという都市伝説が生まれました。
ピーター・グットマンはそれ以来、"ランダムデータでの良い洗浄が期待できる程度にうまくいく"と言って、遺言を戻そうとしています。
しかし私たちは今いる場所にいます、そしてこれがsecure-deleteコマンドによって使用される一連の技術です。しかしまず、私たちはそれらをインストールする必要があります。
セキュア削除のインストール
Ubuntuや他のDebianベースのディストリビューションを使用している場合は、apt-getを使用してこのパッケージをシステムにインストールしてください。他のLinuxディストリビューションでは、代わりにLinuxディストリビューションのパッケージ管理ツールを使用してください。
sudo apt-get install secure-deletesecure-delete バンドルには、4つのコマンドが含まれています。
srmは、ファイルを削除し、そのハードドライブのスペースを上書きすることによって、ファイルを消去するために使用される安全なrmです。sfillは、ハードディスク上のすべての空き領域を上書きするためのツールです。sswapは、スワップスペースを上書きしてクレンジングするために使用されます。sdmemはあなたのRAMをクリーンにするために使用されます。
srmコマンド
あなたはsrmコマンドをrmコマンドと同様に使用します。単一のファイルを削除するには、以下のコマンドを使用してください。-z(ゼロ)オプションは、最終的な消去においてランダムデータではなくゼロを使用するためのものです。-v(詳細)オプションは、srmが進行状況を知らせるようにします。
srm -vz Chapter_One_01.txt最初に気づくことは、srmが遅いということです。動作中にいくつかの視覚的フィードバックを提供しますが、コマンドプロンプトが再び表示されるとほっとします。
-l(セキュリティを減少させる)オプションを使用すると、パスの数を2に減らすことができ、これにより大幅に速度が向上します。
srm -lvz Chapter_One_02.txtsrm は、これが彼らの意見ではより安全性が低いと知らせていますが、それでも私たちのためにファイルを削除して上書きしてくれます。
-l(セキュリティを減少)オプションを2回使用することで、パスの回数を1回に減らすことができます。
srm -llvz Chapter_One_03.txt複数のファイルを使用してsrmを使用する
私たちはsrmにもワイルドカードを使用できます。このコマンドは、第1章の残りの部分を消去して消去します:
srm -vc Chapter_One_0?.txtファイルは順番にsrmによって処理されます。
srmを使用してディレクトリとその内容を削除する
-r(再帰)オプションを使用すると、srmはすべてのサブディレクトリとその内容を削除します。最初のディレクトリへのパスをsrmに渡すことができます。
この例では、現在のディレクトリ ~/research のすべてを削除しています。これは、~/research 内のすべてのファイルとすべてのサブディレクトリが安全に削除されることを意味します。
srm -vz *srmはディレクトリとファイルの処理を開始します。
最終的にコマンドプロンプトに戻ります。この記事のために調査したテストマシンでは、現在のディレクトリと3つの入れ子のディレクトリに分散した約200ファイルを削除するのに約1時間かかりました。
すべてのファイルとサブディレクトリは期待通りに削除されました。
sfillコマンド
もし削除したファイルについて心配している場合、過去の領域を確認してそれが上書きされていることを確認するにはどうすればよいですか?sfillコマンドは、ハードドライブ上のすべての空きスペースを上書きします。
これを行うと、ハードドライブの空き容量がどんどん少なくなり、最終的には全く空き容量がなくなることに気付くでしょう。sfillが完了すると、すべての空き容量があなたに返されます。もしあなたがマルチユーザーシステムを管理している場合、これは非常に混乱を引き起こす可能性があるため、これは営業時間外に行うべきメンテナンスタスクです。
たとえ単一ユーザーのコンピュータであっても、ハードドライブの空き容量が失われると、sfillがほとんどのスペースを使い切った時点で使用できなくなります。これは、あなたが開始してから離れるような作業です。
少しスピードを上げるために、-l(セキュリティを低下させる)オプションを使用できます。他のオプションは、以前に見た-v(冗長)および-z(ゼロ埋め)オプションです。ここでは、sfillに/homeディレクトリのすべての空きスペースを安全に上書きするように依頼しています。
sudo sfill -lvz /homeリラックスしてください。テスト用コンピュータでは---10 GBのハードドライブしかありません---これは午後の中頃に始まり、夜の間に完了しました。
数時間にわたって処理を続けます。これは、-l(セキュリティを緩和する)オプションを使用している場合です。しかし、最終的にはコマンドプロンプトに戻されます。
sswapコマンド
「sswap」コマンドは、スワップパーティションのストレージを上書きします。最初に行うべきことは、スワップパーティションを特定することです。これを行うには、ブロックデバイスをリストする「blkid」コマンドを使用できます。
sudo blkid「swap」という単語を見つけ、それが接続されているブロックデバイスを書き留める必要があります。
スワップパーティションが/dev/sda5に接続されているのが見えます。
私たちは、上書きの間、スワップパーティションへのディスク書き込みを無効にする必要があります。swapoffコマンドを使用します:
sudo swapoff /dev/sda5私たちは今、sswap コマンドを使用できます。
/dev/sda5をsswapコマンドのコマンドラインの一部として使用します。また、先ほど使用した-v(詳細表示)オプションと-ll(セキュリティを緩和)オプションも使用します。
sudo sswap -llv /dev/sda5sswapはスワップパーティションを順に処理し、そこにあるすべてのデータを上書きします。sfillほど時間はかかりませんが、そう感じるかもしれません。
完了したら、スワップパーティションをアクティブなスワップスペースとして再設定する必要があります。これをswaponコマンドで行います:
sudo swapon /dev/sda5sdmemコマンド
secure-deleteパッケージには、コンピュータ内のランダムアクセスメモリ(RAM)チップを消去するツールも含まれています。
コールドブート攻撃は、コンピュータがオフになった直後に物理的にアクセスする必要があります。この種の攻撃は、潜在的にRAMチップからデータを回収することを可能にします。
この種の攻撃から自分自身を守る必要があると思うなら、そしてほとんどの人にとってそれは考えられないことですが、コンピュータをシャットダウンする前にRAMを消去することができます。再び、-v(詳細表示)および-ll(セキュリティを低下させる)オプションを使用します。
sudo sdmem -vllターミナルウィンドウは、sdmemがあなたのRAMを処理していることを示すために、アスタリスクで埋め尽くされます。
簡単な選択肢:ドライブを暗号化するだけ
ファイルを安全に削除する代わりに、暗号化を使ってハードドライブやホームフォルダーを保護しませんか?
もしそれを実行すれば、誰もライブファイルや削除されたファイルを含めて、何にもアクセスできなくなります。そして、すべてのファイルがすでに保護されているため、敏感なファイルを安全に消去することを心配したり、覚えておく必要はありません。
ほとんどのLinuxディストリビューションは、インストール時に暗号化を使用するかどうか尋ねます。「はい」と答えると、将来的な面倒を大幅に軽減できます。あなたが秘密や機密情報を扱わないかもしれませんが、使用が終わった後にそのコンピュータを他の誰かに譲ったり売ったりするかもしれないと思うなら、暗号化はそれをも簡素化します。
Linuxコマンド | ||
ファイル | t | |
プロセス | A | |
ネットワーキング | netstat |
関連: 開発者と愛好者のための最高のLinuxノートパソコン
















