はじめに
Linuxサーバーの運用管理において、ネットワーク経由でのファイル転送後や定期バックアップの完了後に、データ破損や悪意ある改ざんが生じていないかを確かめる完全性検証は不可欠なプロセスです。本稿では、Ubuntu 24.04環境に標準で組み込まれているcksumユーティリティを取り上げ、チェックサムの算出からハッシュ値照合による整合性チェックまで、実務に即した手順を体系的に解説します。
cksumの基本操作と単一ファイルの整合性確認
操作手順の検証を進めるにあたり、まずは専用の作業ディレクトリをホーム直下に設けてカレントディレクトリを移動します。ターミナルで mkdir -p ~/cksum_demo && cd ~/cksum_demo を実行してください。

整合性チェックの対象となるテストファイルを用意するため、echo 'Hello Ubuntu cksum test' > original.txt コマンドを発行してテキストデータを書き込みます。

対象ファイルを引数に指定して cksum を呼び出すと、アルゴリズムに基づいて算出された固有のチェックサム値とファイル容量(バイト長)が出力され、データの健全性を判定できます。
出力結果の第1フィールドは32ビットCRCチェックサム値、続く第2フィールドはファイルサイズ(24バイト)を表しています。
⚙️ [主要オプション]
-a, --algorithm : 従来のCRC32以外に、md5やsha1、sha256などの算出アルゴリズムを明示的に指定します。-c, --check : チェックサム一覧が記述された照合ファイルを読み込み、複数ファイルの完全性を一括検証します。--untagged : アルゴリズム名のヘッダーを付与せず、ダイジェスト値とファイルパスのみを標準形式で出力します。--base64 : ダイジェスト文字列を標準の16進数ではなくBase64エンコーディング形式で出力します。--raw : チェックサムの算出結果をテキストではなく生のバイナリ列として端末に出力します。

複数ファイルの比較と意図しない改ざんの検知
同一内容を持つ複製ファイルを準備するため、cp original.txt copy.txt コマンドを実行します。

データ破損や意図しない変更をシミュレートする目的で、オリジナルファイルを別名でコピーした直後に任意の文字列を追記する cp original.txt modified.txt && echo 'unexpected change' >> modified.txt を実行します。

用意した各ファイルを一括で引数に渡し、cksum original.txt copy.txt modified.txt を実行して各ファイルのチェックサムとサイズを比較します。
内容が完全に一致している original.txt と copy.txt は、CRCチェックサム(306207352)およびバイト数(24)が完全に同一となります。
一方で末尾に文字列が加えられた modified.txt は、算出値(633487654)およびサイズ(42)が異なって表示されるため、ファイル内容に何らかの改変が生じたことを即座に察知できます。

パイプラインおよび標準入力(stdin)データの即時検証
パイプライン(|)経由で標準入力へ送られたストリームデータに対しても、echo 'Streaming text data' | cksum を実行することで直接チェックサムを計算可能です。
ストレージ上に中間ファイルを一切書き出すことなく、インメモリ上で受け取ったテキストストリームのチェックサム(1759270211)とデータサイズ(20バイト)を瞬時に確認できます。

複数のファイルをアーカイブ化した直後にアーカイブ全体の整合性を担保するため、tar -cf demo_archive.tar original.txt copy.txt && cksum demo_archive.tar を実行します。
生成された demo_archive.tar アーカイブファイルについて、固有のチェックサム(2343346160)とアーカイブ容量(10240バイト)が算出されます。

暗号学的ハッシュ(SHA256)の指定とチェックサムファイルによる一括照合
セキュリティ強度を高めるため、-a sha256 オプションを指定して original.txt のSHA256ダイジェストを計算し、リダイレクト(>)によって照合用ファイル original.sha256 へ保存します。

出力された照合用ファイルの状態を確認するため、cat original.sha256 コマンドを実行します。
ファイル内部には対象ファイル名とともに、厳密な64文字のSHA256ハッシュダイジェストが標準タグ形式で正しく格納されていることが確認できます。

保存済みリストを読み込んで実ファイルの整合性を自動判定するには、-c オプションを付与して cksum -c original.sha256 を実行します。
現在のファイルから算出されたハッシュ値が記録内容と寸分違わず合致すれば、画面上に original.txt: OK と通知され、ファイルが正常に維持されていることが証明されます。

ここまで、Ubuntu環境における cksum コマンドを用いたファイルチェックサム算出と整合性検証の基本から応用までを解説しました。
大容量ファイルの配布時や障害復元用バックアップの作成時など、データの欠損や改変を素早く高精度に検出したい現場でぜひご活用ください。