- 1 はじめに
- 2 検証環境
- 3 コマンド一覧
- 4 コマンドのオプション一覧
- 5 チェックサムを計算する方法
- 6 ファイルが壊れていないかどうかの確認方法
- 7 ファイルが壊れていないかどうかの確認方法(実践編)
- Z 参考情報
1 はじめに
チェックサムを計算するコマンドの使い方について説明します。
2 検証環境
CentOS版数は次のとおりです。
[root@server ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
カーネル版数は次のとおりです。
[root@server ~]# uname -r 3.10.0-1160.el7.x86_64
3 コマンド一覧
チェックサムを求めるコマンドとして、下記6コマンドがインストールされていました。
4 コマンドのオプション一覧
どのコマンドのオプションも同じでした。ここでは、sha256sumのオプション一覧を示します。
[root@server ~]# sha256sum --help 使用法: sha256sum [OPTION]... [FILE]... SHA256 (256-bit) チェックサムを表示または照合します。 FILE の指定が無いか、 - が指定された場合、標準入力から読み込みます。 -b, --binary バイナリモードで読み込む -c, --check FILE から SHA256 チェックサムを読み込み、照合する --tag create a BSD-style checksum -t, --text テキストモードで読み込む (デフォルト) Note: There is no difference between binary and text mode option on GNU system. The following four options are useful only when verifying checksums: --quiet don't print OK for each successfully verified file --status don't output anything, status code shows success --strict exit non-zero for improperly formatted checksum lines -w, --warn warn about improperly formatted checksum lines --help この使い方を表示して終了する --version バージョン情報を表示して終了する The sums are computed as described in FIPS-180-2. When checking, the input should be a former output of this program. The default mode is to print a line with checksum, a character indicating input mode ('*' for binary, space for text), and name for each FILE. GNU coreutils online help: <http://www.gnu.org/software/coreutils/> sha256sum の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。 完全な文書を参照する場合は info coreutils 'sha256sum invocation' を実行してください。
5 チェックサムを計算する方法
各コマンドを使って、チェックサムを計算してみます。
5.1 事前準備
テスト用のファイルを作成します。
なお、ファイルの作成方法は、ファイルの作り方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# head -c 1m /dev/urandom > 1m.data [root@server ~]# ls -l 1m.data -rw-r--r--. 1 root root 1048576 1月 5 21:00 1m.data
5.2 md5sumコマンドによるチェックサムの計算
[root@server ~]# md5sum 1m.data 1dd822615ae0d42a29769e9eb2f98bbd 1m.data
5.3 sha1sumコマンドによるチェックサムの計算
[root@server ~]# sha1sum 1m.data d4b7495965fdb7a45dc5012f6e8d7e58701221eb 1m.data
5.4 sha256sumコマンドによるチェックサムの計算
[root@server ~]# sha256sum 1m.data 93b48c575ff85a26db49b8f249135e9f894c8481a106435acda43767e735affd 1m.data
5.5 sha512sumコマンドによるチェックサムの計算
[root@server ~]# sha512sum 1m.data e88e86635008260c7a4d5d6ab1630ef255345fbf7216c3befbe51a1151185d0af07ea832949325a3537a50003d746524d9f2c5b1299a71afd2ec5b70ea6f63b6 1m.data
6 ファイルが壊れていないかどうかの確認方法
6.1 事前準備
テスト用のファイルを作成します。
[root@server ~]# head -c 1m /dev/urandom > 1m.data [root@server ~]# head -c 2m /dev/urandom > 2m.data [root@server ~]# head -c 3m /dev/urandom > 3m.data
チェックサムを格納したファイル(sha256sum.txt)を作成します。
なお、findコマンドの使い方は、findコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# find . -maxdepth 1 -type f -name "*.data" -exec sha256sum {} >> sha256sum.txt \;
作成したファイルの中身を確認します。
[root@server ~]# cat sha256sum.txt 3d4d3872471a4c2b48257a3ef6184d3c7fbe076f4675bb0b6466dee24249fb6d ./1m.data 55abe3fd286f14c520ffe59c81ef7ecb499c0b3a5513de2b47627bd6036e8229 ./2m.data fb9139b751d748aac424a269816209ba06c85baa83fd8b5c65ce85f548c8bdfe ./3m.data
6.2 ファイルが壊れていないことの確認
ファイルが壊れていないことを確認します。
ファイル作成後、何も変更を加えていないので、チェックサムのチェックはいずれも「完了」となります。
[root@server ~]# sha256sum -c sha256sum.txt ./1m.data: 完了 ./2m.data: 完了 ./3m.data: 完了
次にファイルを意図的に壊してみます。
[root@server ~]# echo 1>> 3m.data
sha256sum.txtを使って、再度ファイルが壊れていないかどうか確認してみます。
変更を加えたファイルが「失敗」と表示されていることがわかります。
[root@server ~]# sha256sum -c sha256sum.txt ./1m.data: 完了 ./2m.data: 完了 ./3m.data: 失敗 sha256sum: 警告: 1 個の計算したチェックサムが一致しませんでした
7 ファイルが壊れていないかどうかの確認方法(実践編)
理研からダウンロードしたisoファイルが壊れていないかどうかを確認してみます。
http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/
ISOファイルをダウンロードします。
[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-NetInstall-2009.iso
ダウンロードしたISOファイルを確認します。
[root@server ~]# ls -l CentOS-7-x86_64-NetInstall-2009.iso -rw-r--r--. 1 root root 602931200 10月 27 2020 CentOS-7-x86_64-NetInstall-2009.iso
次に、sha256sum.txtファイルをダウンロードします。
[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/sha256sum.txt
sha256sum.txtファイルの中身を確認します。
4ファイルのsha256チェックサムが格納されていることがわかります。
[root@server ~]# cat sha256sum.txt 689531cce9cf484378481ae762fae362791a9be078fda10e4f6977bf8fa71350 CentOS-7-x86_64-Everything-2009.iso b79079ad71cc3c5ceb3561fff348a1b67ee37f71f4cddfec09480d4589c191d6 CentOS-7-x86_64-NetInstall-2009.iso 07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a CentOS-7-x86_64-Minimal-2009.iso e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987 CentOS-7-x86_64-DVD-2009.iso
「CentOS-7-x86_64-NetInstall-2009.iso」が壊れていなかどうかを確認してみます。
「完了」(★印)と表示されているので、ファイルが壊れていないことがわかります。
「CentOS-7-x86_64-NetInstall-2009.iso」以外のファイルはダウンロードしていないので、
「そのようなファイルやディレクトリはありません」と表示されています。
[root@server ~]# sha256sum -c sha256sum.txt sha256sum: CentOS-7-x86_64-Everything-2009.iso: そのようなファイルやディレクトリはありません CentOS-7-x86_64-Everything-2009.iso: オープンまたは読み込みに失敗しました CentOS-7-x86_64-NetInstall-2009.iso: 完了 ★ sha256sum: CentOS-7-x86_64-Minimal-2009.iso: そのようなファイルやディレクトリはありません CentOS-7-x86_64-Minimal-2009.iso: オープンまたは読み込みに失敗しました sha256sum: CentOS-7-x86_64-DVD-2009.iso: そのようなファイルやディレクトリはありません CentOS-7-x86_64-DVD-2009.iso: オープンまたは読み込みに失敗しました sha256sum: 警告: 一覧にある 3 個のファイルが読み込めませんでした
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ