我需要验证对 solaris 10 机器上所有二进制文件的访问(模式、所有者)是否与它们来自的软件包一致。我可以这样做
/usr/bin/find / -type f -perm -u+x,g+x,o+x -exec ls -l {} \; > /tmp/binaries.txt
然后遍历列表并检查
pkgchk -l –p /path/to/binary
文件是否合规。当然,这可以编写脚本,但这仍然需要相当长的时间。我想知道是否有一个工具或某种东西可以让我反过来做:对于安装的每个包,检查其内容是否在磁盘上,就像最初在包中定义的那样(模式和所有权)。
答案1
pkgchk
是的,如果您不使用该-p
选项将其限制为某些路径名,而是指定要检查的软件包名称集,或者让它默认检查计算机上安装的所有软件包,那么该实用程序也是。从手册页:
上面定义的第一个概要用于列出或检查当前安装在系统上或指示的 pkgmap 中的对象的内容和/或属性。软件包名称可以在命令行上列出,或者默认情况下,将检查机器的所有内容。
因此,处理“对于每个安装的包,检查其内容是否在磁盘上,就像最初在包中定义(模式和所有权)”的语法很简单:
pkgchk -a
(告诉-a
它只检查模式和所有权,而不是内容。如果您删除它以检查内容,那么您将需要添加-n
不检查预计会更改的可编辑文件的内容,例如配置文件。)