本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ダウンロードファイルを検証する「sha1sum」コマンドと「sha256sum」コマンドです。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ダウンロードファイルを検証する「sha1sum」コマンドと「sha256sum」コマンドです。
「sha1sum」コマンドと「sha256sum」コマンドは、ファイルをダウンロード(コピー)した後に、破損や改変がないことを確認するために使うコマンドです。ファイルを読み込み、ハッシュ値を表示、照合できます ※。
ファイルのダウンロード元やメッセージの送信元があらかじめ、ファイルなどのハッシュ値を計算、公開している場合があります。受け手側であらためてハッシュ値を算出し、2つの値が一致していれば、正しく受信できたことになります。
ハッシュ値は文字列やファイルの内容を基にして計算した値です。ハッシュ値を計算するハッシュ関数(SHA:Secure Hash Algorithm)にはさまざまな種類があり、sha1sumコマンドはSHA-1アルゴリズムに基づいて、160ビットのハッシュ値(40桁の16進数)を出力します。sha256sumコマンドはSHA-256を用いて、256ビット(64桁の16進数)を出力します。
※ ハッシュ値を「メッセージダイジェスト(message digest)」とも呼ぶ。古くはファイルの破損、改変がないことをチェックサム(checksum)という誤り検出能力の低い計算方法で確認していた。このため、ハッシュ値を「チェックサム」と呼ぶこともある。
sha1sum [オプション] 対象ファイル (算出時)
sha1sum -c ファイル [オプション](照合時)
sha256sum [オプション] 対象ファイル (算出時)
sha256sum -c ファイル [オプション] (照合時)
※[ ]は省略可能な引数を示しています。
短いオプション | 長いオプション | 意味 |
---|---|---|
-b | --binary | バイナリモードで読み込む |
-t | --text | テキストモードで読み込む(デフォルト) |
-c ファイル | --check ファイル | ファイルからハッシュ値を読み込んで照合する(ファイル名として「-」を指定すると標準入力から読み込む:本文参照) |
短いオプション | 長いオプション | 意味 |
---|---|---|
--strict | 無効な設定行がある場合は0以外で終了する | |
--quiet | 照合が成功した場合はメッセージを表示しない | |
--status | 何も出力しない(終了コードで結果を判別する) | |
-w | --warn | ファイルの書式が不正な場合に警告する |
ダウンロード元のサイトにSHA-1の値が掲載されている場合は「sha1sum 対象ファイル」で、SHA-256の値が掲載されている場合は「sha256sum 対象ファイル」を実行し、ハッシュ値が一致しているか確認します。
sha1sum 対象ファイル
sha256sum 対象ファイル
以下では、CentOSのISOイメージファイルと、配布元が用意したSHA-256の値を収めたsha256sum.txtファイルをダウンロードして、値を表示しています(画面1)。ダウンロードにはwgetコマンドを使用しました。
ハッシュ値を収めたファイルを入手できた場合、「sha1sum -c ファイル」または「sha256sum -c ファイル」と実行するだけで、ファイルを照合できます。目視で確認する必要がなくなるため、確実です。
sha1sum -c ファイル
sha256sum -c ファイル
(ハッシュ値が書かれたファイルを指定する)
画面2では、先ほどダウンロードした「sha256sum.txt」を利用して、正しくダウンロードできているかどうか、確認しています。
今回使用した「sha256sum.txt」には、画面1で確認したように、同じ配布元からダウンロードできる他のISOイメージの値も書かれていました。そのため、「オープンまたは読み込みに失敗しました」というメッセージが表示されています。
そこで、画面3のようにgrepコマンドを使って、照合したいファイル名が書かれている行を絞り込みました。これで対象ファイルだけを確認できます。「-c -」は標準入力からハッシュ値を読み込むという意味です。
なお、ダウンロードが中断した、通信エラーが生じた、などの理由で正しくファイルをダウンロードできていない場合は、「失敗」と表示されます(画面4)。
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.