手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

bart(1M)

名称

bart - 文件完整性扫描程序和报告程序

用法概要

/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 create

该清单生成器工具创建系统的文件级快照。输出是一个文件属性目录,称为清单。请参见 bart_manifest(4)。

您可以通过三种方式指定在目录中列出的文件列表。使用不带任何选项的 bart create、在命令行中通过名称指定文件,或者通过使用指令指定要监视的文件来创建规则文件。请参见 bart_rules (4)。

缺省情况下,清单生成器在目录中列出根 (/) 文件系统中所有文件的所有属性。仅当挂载到根文件系统的文件系统具有与根文件系统相同的类型时,才会在目录中列出。

例如,//usr/opt 是单独的 UFS 文件系统。/usr/opt 挂载到 /。因此,这三个文件系统全部会在目录中列出。/tmp 也挂载到 /,但却不会在目录中列出,因为它是 TMPFS 文件系统。挂载的 CD-ROM 不会在目录中列出,因为它们是 HSFS 文件系统。

bart compare

该报告工具比较两个清单。输出是按文件组织的属性差异列表。这些差异是控制清单和测试清单这两个清单之间的差异。

差异是指两个清单中列出的某个给定文件的任何属性发生的变化。清单中的新文件或删除文件报告为差异。

此报告机制提供了两种类型的输出:详细输出和程序输出。详细输出进行了本地化,显示在多行中,而程序输出更便于其他程序解析。请参见“输出”部分。

缺省情况下,报告工具生成详细输出来报告除修改目录的时间戳(dirmtime 属性)以外的所有差异。

为了确保一致且准确的比较结果,control-manifesttest-manifest 必须使用相同的规则文件构建。

生成清单或比较两个清单时,可使用规则文件忽略指定的文件或子树。通过使用不同的规则文件重新运行 bart compare 命令,用户可以从不同的角度比较清单。请参见 bart_rules(4)bart_manifest(4)

您还可以通过规则文件 bart_rules 指定要跟踪的文件以及要标记的差异类型。

选项

支持以下选项:

–i attribute ...

指定要全局忽略的文件属性。以逗号分隔列表形式指定属性。

此选项与将文件属性提供给规则文件中的全局 IGNORE 关键字具有相同的行为。请参见 bart_rules(4)。

–I [file_name...]

指定文件的输入列表。可以在命令行中指定或从标准输入读取文件列表。

–n

禁止计算文件列表中所有常规文件的内容签名。

–p

在“程序模式”下显示清单比较输出,该模式适合进行程序解析。输出不本地化。

–r rules_file

使用 rules_file 可指定要在目录中列出哪些文件和目录,并定义要标记哪些文件属性差异。如果 rules_file,则从标准输入读取规则。有关语法的定义,请参见 bart_rules(4)。

–R root_directory

指定清单的根目录。规则指定的所有路径以及清单中报告的所有路径都是相对于 root_directory 的。


注 - 不得使用 –R 选项引用任何非全局区域的根文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 zones(5)
–a [ hash ]

指定要用于对文件内容进行散列运算的加密摘要算法:md5sha1sha256sha512 是当前支持的值。如果未指定 –a,则使用 sha256 并创建版本 1.1 清单,该清单中会指明使用了哪种散列算法。如果指定了 md5,则创建版本 1.0 清单。

操作数

bart 允许将操作数用引号引起来。如果空格出现在子树和子树修饰符规范中,这特别重要。

支持下列操作数:

control-manifest

指定由 bart create 在控制系统上创建的清单。

test-manifest

指定由 bart create 在测试系统上创建的清单。

输出

输出

bart createbart compare 命令将输出写入标准输出,并将错误消息写入标准错误。

bart create 命令生成系统清单。请参见 bart_manifest(4)。

如果使用 bart compare 命令对两个系统清单进行比较,则会生成一个文件差异列表。缺省情况下,比较输出会本地化。然而,如果指定了 –p 选项,则输出以适合进行程序处理的格式生成。

缺省格式


filename
attribute control:xxxx test:yyyy
filename

control-manifesttest-manifest 之间存在差异的文件的名称。对于包含嵌入式空格或换行符的文件名,请参见 bart_manifest(4) 。

attribute

在进行比较的清单之间存在差异的文件属性的名称。xxxxcontrol-manifest 中的属性值,yyyytest-manifest 中的属性值。如果同一个文件的多个属性存在差异,则每个差异都将记录在单独的一行中。

支持以下属性:

acl

文件的 ACL 属性。对于具有 ACL 属性的文件,此字段包含 acltotext() 的输出。

all

所有属性。

contents

文件的校验和值。此属性仅为常规文件指定。如果关闭上下文检查,或者无法计算校验和,则此字段的值为

dest

符号链接的目标。

devnode

设备节点的值。此属性仅用于字符设备文件和块设备文件。

dirmtime

目录的修改时间,以秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 开始计算。

gid

此项的所有者的数字组 ID。

lnmtime

链接的创建时间。

mode

表示文件权限的八进制数。

mtime

文件的修改时间,以秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 开始计算。

size

以字节为单位的文件大小。

type

文件的类型。

uid

此项的所有者的数字用户 ID。

以下缺省输出显示 /etc/passwd 文件的属性差异。输出表明 sizemtimecontents 属性已发生变化。


/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

与缺省格式中的 filename 相同。

attribute control-val test-val

每个文件在控制清单与测试清单之间存在差异的文件属性的说明。每个条目都包含每个清单中的属性值。有关属性的定义,请参见 bart_manifest(4)。

每行程序输出都描述单个文件的所有属性差异。

以下程序输出显示 /etc/passwd 文件的属性差异。输出表明 sizemtimecontents 属性已发生变化。

/etc/passwd size 74 81 mtime 3c165879 3c165979
contents daca28ae0de97afd7a6b91fde8d57afa 84b2b32c4165887355317207b48a6ec7

退出状态

清单生成器

清单生成器返回以下退出值:

0

成功

1

处理文件时发生非致命错误;例如,权限问题

>1

致命错误;例如,命令行选项无效

报告工具

报告工具返回以下退出值:

0

未报告任何差异

1

找到了差异

>1

执行比较时发生致命错误

示例

示例 1 创建缺省清单但不计算校验和

以下命令行创建缺省清单,它包含 / 文件系统中的所有文件。–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 比较两个清单并指定要忽略的属性

以下命令行比较两个清单。不比较 dirmtimelnmtimemtime 属性。


bart compare -i dirmtime,lnmtime,mtime manifest1 manifest2

示例 7 使用规则文件比较两个清单

以下命令行使用规则文件 rules 比较两个清单。


bart compare -r rules manifest1 manifest2

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
security/bart
接口稳定性
Committed(已确定)

另请参见

cksum(1)digest(1)find(1)bart_manifest(4)bart_rules(4)attributes(5)

附注

系统引导时可能会临时修改某些系统库的文件属性。为了避免触发误报,仅应在以下情况下比较清单:创建两个清单时系统处于相同的状态;即两个清单都是在单用户或多用户模式下创建的。