md5sum の -c オプション
-c 生成済みの md5sum の一覧とファイルを比較して改ざんを検出する。
事前にファイルのmd5sum の値の一覧を作成しておき、いまのファイルがそのファイルのハッシュ値と一致するかを調べておく。すると簡単に改竄検出や不正検出を見つけることが出来る。
使い方
最初に、md5sum の一覧を計算してファイルに書き出しておきます。
md5sum sample.txt > out.md5
次に、この出力結果を使ってファイルが一致するかチェックします
md5sum -c out.md5
out.md5の中身は次のようになっています。 md5値 ファイルPATH
が列挙されています。
c3cec535915d86f2ce51c668f6919696 sample.ext
チェック-c
の場合は、右側のファイルパスのファイルを探して、md5値を導出し事前に計算していた左側に一致するかを調べてくれます。
指定したフォルダの中をマトメてチェック
1ファイルだと何の役に立つかわかりにくいのですが、フォルダの中のまとめてチェックすると強いです。
find コマンドや xargs と組合せる。 フォルダのすべてのファイルについて、md5を計算する
sudo find /etc/ -mindepth 1 -type f -exec md5sum {} \; > etc.md5
結果を使って、フォルダの中のすべてのファイルについて、ファイルの改竄検出を行う。
sudo md5sum -c etc.md5
if 文で使う
bash の if 文でつかときは --status
オプションが便利です。
このオプションを付けると、表示をしない代わりに、チェック結果をコマンドの実行結果で返してくれます。
if ( md5sum -c --status etc.md5 ) ; do echo "改竄チェックOK" else echo "改竄チェックNG" fi
これで有るフォルダの中が書き換わってないかを手軽に調べることが出来ます。
もしチェックに失敗したファイルを見つけたいときは
sudo md5sum -c out.md5 | grep -i failed
のようにしたら見つけることが出来ました。
もっと簡単にするには、
sudo md5sum --quiet -c out.md5
--quiet don't print OK for each successfully verified file
このオプションをつけるのもいいでしょうね。
ハッシュ値をまとめて保存とは
もし、ハッシュ値保存したファイルを改ざんされると怖いので、ハッシュ値を保存したファイルのハッシュ値を取ってそれをブロックごととに保存していくといいです。このブロックが・・・
ブロックチェーン技術などで盛んにファイルの記録をハッシュ値で云々と叫ばれてます。 基本的にはハッシュ値を計算してファイルに保存してそのファイルのハッシュ値を計算してーってことです。似たようなものです。
フォルダの中のファイルつまり、あるエントリの内部のハッシュ値をすべて見るには、md5sum である程度十分です。便利だし。
衝突の可能性も有るでしょうがローカルファイルで衝突は可能性が低いしね。
参考資料
How to access all your cloud files in one place in Windows 10 | TechRadar