检查Unix/Linux文件完整性

7

我不知道如何使用哈希算法md5在Unix/Linux上检查文件的完整性。 我打算开发一个bash脚本,在Linux上检查特定文件夹(包括子文件夹)中所需文件的md5。那么我的问题是,这是否可能?背景是在对系统进行更改之前检查文件的完整性。

谢谢您的建议, Ponomy


2
你应该知道 md5sum,对吧?那你卡在哪里了?你也明白保持参考哈希值离线的重要性,对吧? - dmckee --- ex-moderator kitten
5个回答

5
这很容易!使用 md5sum 命令即可。

5

md5sum不支持递归,但他的问题中特别要求了该功能。也许find /path/to/files -type f -print0 | xargs -0 md5sum > checksum.md5已经足够了,但我更喜欢使用hashdeep工具。

使用md5deep -r /path/to/files > checksum.md5。随后,你可以使用md5sum -c checksum.md5 | grep -v ' OK$'检查是否有任何更改。当然,这并不能检测到任何新增加的文件。如果你很谨慎,也可以使用sha256deep和sha256sum。;-)

你还可以使用md5deep -rx checksum.md5 /path/to/files进行检查。或者,你可以使用hashdeep -r /path/to/files > hashes,然后使用hashdeep -ravvk hashes /path/to/files来“审计”文件。我不是很喜欢hashdeep工具进行检查和审计的方式,但你可能会认为它非常出色,那就使用吧。 :-)

当然,所有这些都没有检查文件元数据(时间戳、所有权、权限等)。但是,这样你就涉及到类似TripWire或AIDE之类的东西了。


1

最好使用sha256sum或sha512sum,这些命令在大多数Linux系统中默认包含:

$ sha256sum file
a9c558e2aee7e36080457eabaf5e82b5bcb4f168a552b2c2757121bd72844abc  file
$ sha512sum file
b6d831ff00d55ab467e2c63e27e229f4b1f6e76542709260ead9cde6f426fe76a985ee52cc31b1ab68035d3a37841171c658e3c79cb673566a555d4ab45ff46d  file

0
使用此命令获取MD5哈希值:
md5sum <filename>

0
这是我的脚本,用于使用md5sum检查两个目录中所有文件的完整性。您可以更改要检查的目录名称:
#!/bin/sh

cd persediaan
find . -exec md5 {} \; | sort > /tmp/file1_md5_sort
cd -
cd tmp/persediaan
find . -exec md5 {} \; | grep -v Tag | sort > /tmp/file2_md5_sort
cd -
diff /tmp/file1_md5_sort /tmp/file2_md5_sort | grep -v CVS | grep MD5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接