/usr/bin/bart create [ -n] [-R root_directory] [-r rules_file | -] [-a md5|sha1|sha256|sha384|sha512]
/usr/bin/bart create [-n] [-R root_directory] -I [-a md5|sha1|sha256|sha384|sha512] [file_name]...
/usr/bin/bart compare [-i attribute ] [-p] [-r rules_file | -] control-manifest test-manifest
bart(1M) 是一个基于规则的文件完整性扫描和报告工具,它使用加密强度校验和以及文件系统元数据来报告更改。
bart 实用程序执行两个基本函数:
该清单生成器工具创建系统的文件级快照。输出是一个文件属性目录,称为清单。请参见 bart_manifest(4)。
您可以通过三种方式指定在目录中列出的文件列表。使用不带任何选项的 bart create、在命令行中通过名称指定文件,或者通过使用指令指定要监视的文件来创建规则文件。请参见 bart_rules (4)。
缺省情况下,清单生成器在目录中列出根 (/) 文件系统中所有文件的所有属性。仅当挂载到根文件系统的文件系统具有与根文件系统相同的类型时,才会在目录中列出。
例如,/、/usr 和 /opt 是单独的 UFS 文件系统。/usr 和 /opt 挂载到 /。因此,这三个文件系统全部会在目录中列出。/tmp 也挂载到 /,但却不会在目录中列出,因为它是 TMPFS 文件系统。挂载的 CD-ROM 不会在目录中列出,因为它们是 HSFS 文件系统。
该报告工具比较两个清单。输出是按文件组织的属性差异列表。这些差异是控制清单和测试清单这两个清单之间的差异。
差异是指两个清单中列出的某个给定文件的任何属性发生的变化。清单中的新文件或删除文件报告为差异。
此报告机制提供了两种类型的输出:详细输出和程序输出。详细输出进行了本地化,显示在多行中,而程序输出更便于其他程序解析。请参见“输出”部分。
缺省情况下,报告工具生成详细输出来报告除修改目录的时间戳(dirmtime 属性)以外的所有差异。
为了确保一致且准确的比较结果,control-manifest 和 test-manifest 必须使用相同的规则文件构建。
生成清单或比较两个清单时,可使用规则文件忽略指定的文件或子树。通过使用不同的规则文件重新运行 bart compare 命令,用户可以从不同的角度比较清单。请参见 bart_rules(4) 和 bart_manifest(4)。
您还可以通过规则文件 bart_rules 指定要跟踪的文件以及要标记的差异类型。
支持以下选项:
指定要全局忽略的文件属性。以逗号分隔列表形式指定属性。
此选项与将文件属性提供给规则文件中的全局 IGNORE 关键字具有相同的行为。请参见 bart_rules(4)。
指定文件的输入列表。可以在命令行中指定或从标准输入读取文件列表。
禁止计算文件列表中所有常规文件的内容签名。
在“程序模式”下显示清单比较输出,该模式适合进行程序解析。输出不本地化。
使用 rules_file 可指定要在目录中列出哪些文件和目录,并定义要标记哪些文件属性差异。如果 rules_file 为 –,则从标准输入读取规则。有关语法的定义,请参见 bart_rules(4)。
指定清单的根目录。规则指定的所有路径以及清单中报告的所有路径都是相对于 root_directory 的。
指定要用于对文件内容进行散列运算的加密摘要算法:md5、sha1、sha256、sha512 是当前支持的值。如果未指定 –a,则使用 sha256 并创建版本 1.1 清单,该清单中会指明使用了哪种散列算法。如果指定了 md5,则创建版本 1.0 清单。
bart 允许将操作数用引号引起来。如果空格出现在子树和子树修饰符规范中,这特别重要。
支持下列操作数:
指定由 bart create 在控制系统上创建的清单。
指定由 bart create 在测试系统上创建的清单。
bart create 和 bart compare 命令将输出写入标准输出,并将错误消息写入标准错误。
bart create 命令生成系统清单。请参见 bart_manifest(4)。
如果使用 bart compare 命令对两个系统清单进行比较,则会生成一个文件差异列表。缺省情况下,比较输出会本地化。然而,如果指定了 –p 选项,则输出以适合进行程序处理的格式生成。
filename attribute control:xxxx test:yyyy
在 control-manifest 和 test-manifest 之间存在差异的文件的名称。对于包含嵌入式空格或换行符的文件名,请参见 bart_manifest(4) 。
在进行比较的清单之间存在差异的文件属性的名称。xxxx 是 control-manifest 中的属性值,yyyy 是 test-manifest 中的属性值。如果同一个文件的多个属性存在差异,则每个差异都将记录在单独的一行中。
支持以下属性:
文件的 ACL 属性。对于具有 ACL 属性的文件,此字段包含 acltotext() 的输出。
所有属性。
文件的校验和值。此属性仅为常规文件指定。如果关闭上下文检查,或者无法计算校验和,则此字段的值为 –。
符号链接的目标。
设备节点的值。此属性仅用于字符设备文件和块设备文件。
目录的修改时间,以秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 开始计算。
此项的所有者的数字组 ID。
链接的创建时间。
表示文件权限的八进制数。
文件的修改时间,以秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 开始计算。
以字节为单位的文件大小。
文件的类型。
此项的所有者的数字用户 ID。
以下缺省输出显示 /etc/passwd 文件的属性差异。输出表明 size、mtime 和 contents 属性已发生变化。
/etc/passwd: size control:74 test:81 mtime control:3c165879 test:3c165979 contents control:daca28ae0de97afd7a6b91fde8d57afa test:84b2b32c4165887355317207b48a6ec7
filename attribute control-val test-val [attribute control-val test-val]*
与缺省格式中的 filename 相同。
每个文件在控制清单与测试清单之间存在差异的文件属性的说明。每个条目都包含每个清单中的属性值。有关属性的定义,请参见 bart_manifest(4)。
每行程序输出都描述单个文件的所有属性差异。
以下程序输出显示 /etc/passwd 文件的属性差异。输出表明 size、mtime 和 contents 属性已发生变化。
/etc/passwd size 74 81 mtime 3c165879 3c165979 contents daca28ae0de97afd7a6b91fde8d57afa 84b2b32c4165887355317207b48a6ec7
清单生成器返回以下退出值:
成功
处理文件时发生非致命错误;例如,权限问题
致命错误;例如,命令行选项无效
报告工具返回以下退出值:
未报告任何差异
找到了差异
执行比较时发生致命错误
以下命令行创建缺省清单,它包含 / 文件系统中的所有文件。–n 选项禁止计算校验和,这样会更快地生成清单。
bart create -n示例 2 为指定子树创建清单
以下命令行创建包含 /home/nickiso 子树中所有文件的清单。
bart create -R /home/nickiso示例 3 使用标准输入创建清单
以下命令行使用 find(1) 命令的输出生成要在目录中列出的文件列表。find 输出用作指定了 –I 选项的 bart create 命令的输入。
find /home/nickiso -print | bart create -I示例 4 使用规则文件创建清单
以下命令行使用规则文件 rules 指定要在目录中列出的文件。
bart create -r rules示例 5 比较两个清单并生成程序输出
以下命令行比较两个清单并生成适合进行程序解析的输出。
bart compare -p manifest1 manifest2示例 6 比较两个清单并指定要忽略的属性
以下命令行比较两个清单。不比较 dirmtime、lnmtime 和 mtime 属性。
bart compare -i dirmtime,lnmtime,mtime manifest1 manifest2示例 7 使用规则文件比较两个清单
以下命令行使用规则文件 rules 比较两个清单。
bart compare -r rules manifest1 manifest2
有关下列属性的说明,请参见 attributes(5):
|
cksum(1)、digest(1)、find(1)、bart_manifest(4)、bart_rules(4)、attributes(5)
系统引导时可能会临时修改某些系统库的文件属性。为了避免触发误报,仅应在以下情况下比较清单:创建两个清单时系统处于相同的状态;即两个清单都是在单用户或多用户模式下创建的。