Section Next | Prev


5.2.4 ファイルの要約

ファイルの内容を全て比較して内容が同じかどうかを判定するには、比較対象となる ファイル実態を2つ用意する必要があります。 容量の大きなファイルをインターネットを経由して入手する場合などは特にコピーが 正常にできたかどうかの判定すら難しくなります。 そこで、元となるファイルの内容から特殊な計算式を用いて得られた結果(要約)、 をファイル提供者がネット上に用意し、手元のファイルの要約とネット上の要約が 合致するかどうか(改ざんの検出)、正常にコピーできたかを 判定する事ができます。

要約には、ファイルのサイズや行数といった簡単なものから、データの内容を特殊な 計算方法で算出した結果を用いるなど幾つかの方法があります。


wc

【機能説明】
wc(word count) は最も簡単な要約方法で、テキストファイルの行数、単語数、 文字数(Bytes)を計数し表示します。

【入力フォーマット】
wc [ オプション ] ファイル...

【主なオプション】
-l
行数のみ表示
-w
単語数のみ表示

【実行例】
$ cat -n hosts
     1  # IPaddress     FQDN    alias...
     2  127.0.0.1       localhost
     3  172.19.10.36    pc36.local.detarame.jp  pc36 ycos

$ wc hosts
 3 10 98 hosts

$ wc -l hosts
3 hosts
$ wc -w hosts
10 hosts
$ wc -c hosts
98 hosts

sum

【機能説明】
sum はCRCチェックサムと呼ばれる計算式で要約を作成します。 要約結果の一意性が低く、ファイルの内容が異なる場合でも同一の結果がでる 可能性があります。
【入力フォーマット】
sum [ オプション ] ファイル...
cksum [ オプション ] ファイル...

【実行例】
# sum の実行例、表示は左から要約値、ファイル長(1KB)、ファイル名
$ sum hosts /boot/vmlinuz-2.6.9-55.EL
37664     1 hosts
24400  1477 /boot/vmlinuz-2.6.9-55.EL

# cksum の実行例、ファイル長(B)が異なる
$ cksum hosts /boot/vmlinuz-2.6.9-55.EL
3305119477 98 hosts
2963252502 1511688 /boot/vmlinuz-2.6.9-55.EL

md5sum

【機能説明】
md5sum はMD5と呼ばれる計算式で要約を作成しており、 インターネット上のファイル要約でもよく用いられている方法です。
多くのディストリビューションやFTPサイトでも採用されています。

【実行例】
# md5sum の実行例、要約値とファイル名が表示される
$ md5sum hosts /boot/vmlinuz-2.6.9-55.EL
6dc9f32316458fa299046353ec764e11  hosts
8a4a4b271e07b555d14ebdcdfb2e066d  /boot/vmlinuz-2.6.9-55.EL

openssl dgst

【機能説明】
openssl が導入されている環境では、dgst サブコマンドによって要約を求める事ができます。 また多くの計算方法が用意され、殆どの要約に対応できます。

【実行例】
$ openssl dgst -md5 hosts /boot/vmlinuz-2.6.9-55.EL
MD5(hosts)= 6dc9f32316458fa299046353ec764e11
MD5(/boot/vmlinuz-2.6.9-55.EL)= 8a4a4b271e07b555d14ebdcdfb2e066d

$ openssl dgst -md4 hosts /boot/vmlinuz-2.6.9-55.EL
MD4(hosts)= 52f4a5f662fad8bbf0b95221774673d4
MD4(/boot/vmlinuz-2.6.9-55.EL)= 106f74d92d288907dd7e298ab2ab83e5

$ openssl dgst -sha1 hosts /boot/vmlinuz-2.6.9-55.EL
SHA1(hosts)= ef1eea1e7b50cde14c28b77b7242c0860a2030eb
SHA1(/boot/vmlinuz-2.6.9-55.EL)= c80cc9fc894bdf081d84c77e6814aa21ddcfbb17

$ openssl dgst -sha hosts /boot/vmlinuz-2.6.9-55.EL
SHA(hosts)= cb59c8fc40f921be888c715f846aaf8c825955a7
SHA(/boot/vmlinuz-2.6.9-55.EL)= 21183123201e23dbd1164d7b6a2350ac13d971c1

file

【機能説明】
file は先頭部分を分析し、どのようなファイルかを判定します。 テキストファイルであればスクリプト言語の種類、バイナリであればそこに 格納された特殊な記号(マジックナンバー)からアーキテクチャや形式を判定します。
マジックナンバーは /etc/share/magic などに記載されています。

【実行例】
# ファイル名とファイルの属性が表示される
$ file hosts /boot/vmlinuz-2.6.9-55.EL
hosts:                     ASCII text
/boot/vmlinuz-2.6.9-55.EL: x86 boot sector

# スクリプトは必要なシェルなども表示される
$ file /etc/init.d/network /usr/bin/GET /usr/share/vim/vim63/print/dec-mcs.ps
/etc/init.d/network:                   Bourne-Again shell script text executable
/usr/bin/GET:                          perl script text executable
/usr/share/vim/vim63/print/dec-mcs.ps: PostScript document text conforming at level 3.0

# バイナリはアーキテクチャも表示される
$ file /bin/bash /usr/lib/libc-client.so.0 ~/telnet.exe
/bin/bash:                 ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
/usr/lib/libc-client.so.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV),
stripped
/home/ycos/telnet.exe:     MS-DOS executable (EXE), OS/2 or MS Windows

Section Next | Prev

Copyright 2007-2018 ycosSystems Misc/Body524.html