回答:
find
コマンドを使用して、shred
再帰的に実行します。
find <dir> -type f -exec shred {} \;
man shred
。
srm
@Cookieの回答からは、少なくともこの問題を軽減しようとします)。
-exec shred {} +
シュレッドは複数の引数を受け入れるため、高速化するために使用します。
細断に注意してください!
シュレッドマンページから:
注意:細断処理は、ファイルシステムが所定の場所にデータを上書きするという非常に重要な前提に依存していることに注意してください。これは、物事を行うための伝統的な方法ですが、多くの最新のファイルシステムの設計はこの仮定を満たしていません。以下は、細断処理が有効ではない、またはすべてのファイルシステムモードで有効であることが保証されていないファイルシステムの例です。
AIXおよびSolaris(およびJFS、ReiserFS、XFS、Ext3など)で提供されるものなど、ログ構造またはジャーナルファイルシステム
RAIDベースのファイルシステムなど、一部の書き込みが失敗しても冗長データを書き込み、続行するファイルシステム
Network ApplianceのNFSサーバーなど、スナップショットを作成するファイルシステム
NFSバージョン3クライアントなどの一時的な場所にキャッシュするファイルシステム
圧縮ファイルシステム
ext3ファイルシステムの場合、上記の免責事項は、メタデータだけでなくファイルデータをジャーナルするdata = journalモードでのみ適用されます(したがって、細断処理の有効性は制限されます)。data = ordered(デフォルト)モードとdata = writebackモードの両方で、shredは通常どおり機能します。ext3ジャーナリングモードは、mount manページ(man mount)に記載されているように、/ etc / fstabファイルの特定のファイルシステムのマウントオプションにdata = somethingオプションを追加することで変更できます。
さらに、ファイルシステムのバックアップとリモートミラーには、削除できないファイルのコピーが含まれている可能性があります。これにより、細断処理されたファイルを後で復元できます。
解決策:暗号化されたファイルシステムを使用し、ファイルを削除するだけです。
shred
データ暗号化の使用とデータ暗号化の両方により、(適切に)削除されたファイルだけでなく、すべてのファイルを保護するという利点があるデータ暗号化により、オフラインストレージデバイスからのデータの読み取りが防止されます(盗難または警察を考えてください)。ファイルシステムがマウントされると、いずれの場合も適切なUNIX権限に戻り、データ保護はOSセキュリティと適切なシステム管理のタスクになります。アップフロントファイルシステムの暗号化は、確かに悪くないの戦略的な使い方よりも、安静時のデータの保護にshred
!
代わりに安全な削除を使用してください。
sudo apt-get install secure-delete
srm -r pathname
できた 安全な削除は、3回ではなく38回のパスを使用して、シュレッドよりもずっと妄想的です。高速なシングルパスを実行するには、
srm -rfll pathname
fllは、ランダム性の低いデータジェネレーターを取得し、パスを1つだけにします。
find
ファイル名を切り捨ててリンク解除する前にファイル名を変更することで、保存されているファイル名も消去しようとする提案ベースの方法よりも追加の利点があることに注意してください。
この答えを、このスタックオーバーフローリンク ' CentOSでのファイルの永続的かつ安全な削除 'を使用した細断処理の最も知られているオプションと組み合わせます。
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
編集:単一または複数のファイルをシュレッディングするためのベストアンサーは、一部またはすべてのジャーナルファイルシステムにバッファーがあるため、ファイルを削除する前にメディアに変更を書き込む同期を強制することに注意してください。
可能であれば、findコマンドは、実行するファイルでシェルスクリプトを呼び出す必要があります。
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
各ファイルに。
rm -rvf $1
{}
find... -exec
depth
ここで何をしますか?後続のバックスラッシュについても不明な点
find [dirname] -depth -type f -exec shred -n1 {} \;
これにより、ディレクトリ[dirname]内のファイルの深さ優先検索が実行さshred -n1
れ、各ファイルでコマンドが実行されます。ファイルやディレクトリを削除する-depth
場合、この場合は厳密に必要ではありませんが、デフォルトとして追加するのは良い習慣です。コマンドのこの種を実行している場合はrm -rf
代わりにshred
、-depth
ディレクトリの内容が(したがって、エラーを引き起こす)を削除しようとする前に、ディレクトリが削除されていないことを保証するために必要とされます。
shred -N 1
あります。デフォルトでは、3回細断されるのはヘビ油です。1回で十分であるか、30回は機能しません。
shred
ディレクトリの削除も含め、私が見つけた最も徹底的な方法はfind
、スクリプトを呼び出して次のようにすることshred
です。
このメソッドは、スペースを含むファイル名も適切に処理します。
最初に- shred
スクリプト(私は私の名前を付けdirShredder.sh
て、/root
ディレクトリに保存しました:
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
次に、次のようにスクリプトを呼び出します。
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
killit.sh
ファイル実行可能ファイル(chmod +x
)をマークし、もちろん、シュレッドしたいディレクトリのパスを更新し、dirShredder.sh
それを別の場所に保存する場合に更新してください。
NOTA BENE- shred
Copy-on-Writeファイルシステム(ZFS、BTRFSなど)およびジャーナリングファイルシステムにも問題があります。「暗号化されたファイルシステム」以外に見つけた、これに対処するための実際に受け入れられた「最良の」方法はありませんが、これが事後的にどれほど効果的かはわかりません。
あなたが得ることができると思われる最も近い方法は、シュレッディング操作の後にランダムなデータでドライブのすべての空のスペースを上書きすることです(ゼロではなく、これは常に信頼できるとは限りません)。また、SSDにも他の考慮事項があります(TRIMなど)
ここでは説明しません。他のStackの回答(たとえば、この質問の@user unknownの回答)と、これらのトピックをカバーする「ネット全体でのたくさんのディスカッションがあるので、そのレベルのセキュリティが必要な場合は検索してください。