我试图find一个工具,与Windows上的“sfc”命令或AIX上的“sysck”命令不同,后者可以validation文件内容,所有权和权限是否正确。 “sfc”中的“replace损坏或丢失的文件”function并不是我要找的function,而是“validation所有正确的部分都在正确的位置”function。
我试图执行的任务是validation在embedded式Linux产品上的特定软件版本的许多不同安装和升级path达到相同的整体文件系统状态 – 所有必需的文件和目录存在,具有正确的内容(正如md5sums或类似的)告诉的,所有者,组和权限。
个人命令的集合 – 查找,统计,testing等 – 不是我正在寻找的。 我正在寻找一个工具,比如上面提到的那个。
我已经search了高低,但是这么多的search出现了“fsck”,任何正面的命中都被埋没了。
您可能正在寻找像Tripwire这样的基于主机的IDS,它能够根据自定义策略检查权限,所有权和文件系统校验和。 Windows SFC基本上执行相同的操作,但是要定期执行,并使用Microsoft预定义的策略,系统pipe理员不能更改此策略。
不幸的是,每次更新系统时,基本上必须手动更改文件哈希和权限数据库,因为主要发行版不会为您提供用于系统完整性validation的预填充数据库:

(摘自http://www.centos.org/docs/2/rhl-rg-en-7.2/ch-tripwire.html )
我能想到的最接近的事情(在基于redhat的系统上)是rpm -aV 。 这是rpm的validation部分,它将尝试检查md5总和,文件模式和所有权被正确放置在作为被检查包的一部分列出的文件中,使用-a可以完成组成系统的每个包。
rpm -aV
如果你想修复软件包的权限和模式(可能有点危险)。
rpm --setperms --setugids -a
但做这个工作的最好方法是运行rpm -aV ,检查输出并确保/说明每个包/文件产生的exception结果。 然后,在产生错误的文件/软件包上,您可以重新安装软件包(如果文件不同)或重置validation输出中提供的软件包上的uids / gids / mode。
使用find + stat组合来获得所需的结果。
例如:find / path -type f -exec stat {} \;
# stat RTM_hpc.txt File: `RTM_hpc' Size: 2361 Blocks: 8 IO Block: 4096 regular file Device: 822h/2082d Inode: 1059093 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 500/ chakri) Gid: ( 100/ users) Access: 2011-12-08 14:07:42.028802069 -0600 Modify: 2011-05-31 08:18:46.000000000 -0500 Change: 2011-07-19 09:09:03.952958097 -0500
“一切都在正确的地方”是如何定义的?
rsync -av –dry-run,可能带有-c和–numeric-id对文件系统的引用副本,对于某些用例可能会很好。
也许你可以使用rkhunter来满足你的需求。 它检查数据库的权限和哈希值,但更多的是查找rootkit。 Tripwire会更好,但如果你需要更简单的东西。