2012-11-30 78 views
2

我不知道如何通过散列算法md5检查Unix/Linux上文件的完整性。 我打算开发bash脚本来检查Linux上每个特定文件夹(包括子文件夹)中所需文件的md5。所以我的问题是可以做到的吗?背景是在系统上进行更改之前检查文件的完整性。检查Unix/Linux的文件完整性

谢谢您的advicement, Ponomy

+2

想必您了解'md5sum',对吧?那么你卡在哪里?你确实理解保持参考哈希离线的重要性,对吗? – dmckee

回答

5

这是很容易做到!使用md5sum命令。

+0

@ponomy,如果您发现我的答案有用,请将其标记为已接受? –

1

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之类的东西。

0

这是我用md5sum检查2目录中所有文件完整性的脚本。您可以更改要检查的目录名称:

#!/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