系统管理指南:安全性服务

第 5 章 使用基本审计报告工具(任务)

本章介绍如何在系统上创建文件清单以及如何使用此清单来检查系统的完整性。使用基本审计报告工具 (Basic Audit Reporting Tool, BART),您可以通过在一段时间内对系统执行文件层检查来全面地验证系统。

以下是本章中信息的列表:

基本审计报告工具(概述)

BART 是一种完全在文件系统层运行的文件跟踪工具。使用 BART,可以迅速、轻松、可靠地收集有关安装在已部署的系统上的软件栈组件的信息。使用 BART,可以通过简化耗时的管理任务来显著降低管理系统网络的成本。

使用 BART,可以根据已知的基准确定系统上所进行的文件层更改。可以使用 BART 根据完全安装并配置的系统创建基准或控制清单。然后可将此基准与系统快照进行比较,将生成一个列出从系统安装以来所进行的文件层更改的报告。

bart 命令是标准 UNIX 命令。您可以将 bart 命令的输出重定向到文件以便进行后续处理。

BART 功能

BART 在设计上侧重于既有效又灵活的简单语法。使用此工具,可以生成给定系统在一段时间内的清单。然后,需要验证此系统的文件时,可以通过比较新旧清单来生成报告。使用 BART 的另一种方法是生成若干个相似系统的清单,然后进行系统间的比较。BART 与现有审计工具的主要区别在于 BART 在跟踪信息和报告信息方面都非常灵活。

BART 的其他优点和用法包括:

BART 组件

BART 有两个主要组件和一个可选组件:

BART 清单

您可以使用 bart create 命令在特定时间拍摄系统的文件层快照。输出是名为清单的关于文件和文件属性的目录。此清单列出了有关系统上所有文件或特定文件的信息。它包含了有关文件属性的信息,其中可以包括一些唯一标识的信息,如 MD5 校验和。有关 MD5 校验和的更多信息,请参见 md5(3EXT) 手册页。清单可以进行存储,并可以在客户机和服务器系统间传送。


注 –

BART 不会跨越文件系统边界,但同一类型的文件系统除外。此约束使 bart create 命令的输出更容易预测。例如,在不带参数的情况下,bart create 命令编制根 (/) 目录下所有 UFS 文件系统的目录。但是,不会对 NFS 或 TMPFS 文件系统或已挂载的 CD-ROM 编制目录。创建清单时,请勿尝试审计网络中的文件系统。请注意,使用 BART 监视联网的文件系统会占用大量的资源而生成价值很小的清单。


有关 BART 清单的更多信息,请参见BART 清单文件格式

BART 报告

此报告工具有三项输入:两份要比较的清单和一个可选 rules 文件,此 rules 文件由用户提供,用于指明要标记的差异。

可以使用 bart compare 命令比较两份清单,一份是控制清单,另一份是测试清单。准备这些清单使用的文件系统、选项和 rules 文件必须与使用 bart create 命令时相同。

bart compare 命令的输出是一份报告,其中按文件列出了两份清单间的差异。差异是指上述两份清单中所列出的某个特定文件的任何属性的变化。两份清单间文件项的添加或删除也被视为差异。

报告差异时使用两个控制级别:

这些控制级别是特意设置的,因为生成清单所需的开销比报告两份清单间差异所需的开销大。创建清单之后,即可通过使用不同的 rules 文件运行 bart compare 命令来从各个方面比较清单。

有关 BART 报告的更多信息,请参见BART 报告

BART Rules 文件

rules 文件是一个运行 bart 命令时可选的作为输入的文本文件。此文件使用包含和排除规则。rules 文件用于创建自定义清单和报告。使用 rules 文件,可以用简洁的语法表达要编制目录的文件集以及要监视的任何给定文件集的属性。在比较清单时,使用 rules 文件有助于标记清单间的差异。使用 rules 文件是一种收集有关系统上文件的特定信息的有效方法。

可以使用文本编辑器创建 rules 文件。通过 rules 文件,可以执行以下任务:


注 –

您可以创建若干个用于不同用途的 rules 文件。但是,如果使用 rules 文件创建清单,则比较清单时必须使用同一个 rules 文件。如果比较清单时所用的 rules 文件与创建清单时所用的 rules 文件不同,则 bart compare 命令的输出会列出许多无效的差异。

rules 文件中也可能包含由于用户错误而导致的语法错误和其他不明确的信息。如果 rules 文件确实包含错误信息,则也会报告这些错误。


使用 rules 文件来监视系统上的特定文件和文件属性需要进行规划。创建 rules 文件之前,请首先确定系统上要监视的文件和文件属性。根据要完成的目标,可以使用 rules 文件来创建清单、比较清单或执行其他操作。

有关 BART rules 文件的更多信息,请参见BART Rules 文件格式bart_rules(4) 手册页。

使用 BART(任务列表)

任务 

说明 

参考 

创建清单。 

获取一个列出有关系统上安装的所有文件的信息的清单。 

如何创建清单

创建自定义清单。 

通过以下方法之一来获取一个列出有关系统上安装的特定文件的信息的清单: 

  • 通过指定子树

  • 通过指定文件名

  • 通过使用 rules 文件

 

 

 

 

如何自定义清单

 

 

比较同一系统在一段时间内的清单。或者,将不同系统的清单与控制系统清单进行比较。 

获取比较系统在一段时间内的更改的报告。或者,获取一个或几个系统与控制系统的相比较的报告。 

如何比较同一系统在一段时间内的清单

如何比较不同系统的清单与控制系统的清单

(可选)自定义 BART 报告。 

通过以下方法之一获取自定义 BART 报告: 

  • 通过指定属性。

  • 通过使用 rules 文件。

 

 

 

如何通过指定文件属性自定义 BART 报告

如何通过使用 Rules 文件自定义 BART 报告

使用 BART(任务)

您可以以普通用户、超级用户或承担主管理员角色的用户的身份来运行 bart 命令。 如果作为普通用户运行 bart 命令,则只能列出和监视有权访问的文件,如有关起始目录中文件的信息。在运行 bart 命令时成为超级用户的优势是您所创建的清单会包含有关要监视的隐藏文件和专用文件的信息。如果需要列出和监视有关具有限制性权限的文件(例如 /etc/passwd/etc/shadow 文件)的信息,请以超级用户或承担等效角色的用户的身份来运行 bart 命令。有关使用基于角色的访问控制的更多信息,请参见配置 RBAC(任务列表)

BART 安全注意事项

以超级用户的身份运行 bart 命令会使任何人都能读取输出。此输出可能包含专用文件名。如果您在运行 bart 命令时成为超级用户,请采取相应的措施保护输出。例如,使用可生成具有限制性权限的输出文件的选项。


注 –

本章中的过程和示例显示了由超级用户运行的 bart 命令。除非另有指定,否则以超级用户的身份运行 bart 命令为可选操作。


Procedure如何创建清单

可以在 Solaris 软件的初始安装之后立即创建系统清单。此类清单可提供用于比较同一系统在一段时间内的更改的基准。或者,可以将此清单与不同系统的清单进行比较。例如,如果为网络中的每个系统拍摄快照,然后将每个测试清单与控制清单进行比较,则可以迅速确定需要执行哪些操作来实现测试系统与基准配置的同步。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建一个控制清单并将输出重定向到文件。


    # bart create options > control-manifest
    
    -R

    指定清单的根目录。所有由规则指定的路径都会被解释为此目录的相对路径。所有由清单报告的路径均为此目录的相对路径。

    -I

    无论是从命令行执行此选项,还是从标准输入中读取此选项,它都会接受要列出的单个文件的列表。

    -r

    此清单的 rules 文件的名称。请注意, 在与 -r 选项一起使用时,会从标准输入读取 rules 文件。

    -n

    禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似。

  3. 检查清单内容。

  4. 保存清单以便将来使用。

    为清单选择一个有意义的名称。例如,使用系统名称及此清单的创建日期。


示例 5–1 创建可列出有关系统上所有文件的信息的清单

如果运行不带任何选项的 bart create 命令,则会列出有关系统上安装的所有文件的信息。当从核心映像安装多个系统时,可使用此类清单作为基准。或者,在需要确保安装完全一致的情况下使用此类清单运行比较。

例如:


# bart create

! Version 1.0

! Thursday, December 04, 2003 (16:17:39)

# Format:

#fname D size mode acl dirmtime uid gid

#fname P size mode acl mtime uid gid

#fname S size mode acl mtime uid gid

#fname F size mode acl mtime uid gid contents

#fname L size mode acl lnmtime uid gid dest

#fname B size mode acl mtime uid gid devnode

#fname C size mode acl mtime uid gid devnode

/ D 1024 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9ea47 0 0

/.java D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f8dc04d 0 10

/.java/.userPrefs D 512 40700 user::rwx,group::---,mask:---

other:--- 3f8dc06b 010

/.java/.userPrefs/.user.lock.root F 0 100600 user::rw-

group::---,mask:---,other:--- 3f8dc06b 0 10 -

/.java/.userPrefs/.userRootModFile.root F 0 100600 user::rw-,

group::---,mask:---,other:--- 3f8dc0a1 0 10 -

/.smc.properties F 1389 100644 user::rw-,group::r--,mask:r--

other:r-- 3f8dca0c0 10

.

.

.

/var/sadm/pkg/SUNWdtmad/install/depend F 932 100644 user::rw-,

group::r--,mask:r--,other:r-- 3c23a19e 0 0 -

/var/sadm/pkg/SUNWdtmad/pkginfo F 594 100644 user::rw-

group::r--,mask:r--,other:r-- 3f81e416 0 0 -

/var/sadm/pkg/SUNWdtmad/save D 512 40755 user::rwx,group::r-x

mask:r-x,other:r-x 3f81e416 0 0

/var/sadm/pkg/SUNWdtmaz D 512 40755 user::rwx,group::r-x

mask:r-x,other:r-x 3f81e41b 0 0

/var/sadm/pkg/TSIpgxw/save D 512 40755 user::rwx

group::r-x,mask:r-x,other:r-x 3f81e892 0 0

.

.

.

每份清单都包括头和项。每个清单文件项均是单独的一行,具体取决于文件类型。例如,对于上面输出的每个清单项而言,类型 F 指定文件,而类型 D 指定目录。同时还列出了有关大小、内容、用户 ID、组 ID 和权限的信息。输出中的文件项按文件名的编码版本排序,从而能够正确地处理特殊字符。所有项均按文件名的升序排列。所有非标准文件名(例如那些包含嵌入的换行符或制表符的文件名)都在排序之前将非标准字符引起来。

! 开头的行提供有关清单的元数据。清单版本行指示清单规格版本。日期行以日期格式显示清单的创建日期。请参见 date(1) 手册页。清单比较工具会忽略某些行。被忽略的行包括空白行、仅包含空格的行,以及以 # 开头的注释。


Procedure如何自定义清单

可以通过以下方法之一自定义清单:

  1. 确定要列出和监视的文件。

  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 安装 Solaris 软件之后,使用以下选项之一创建自定义清单:

    • 通过指定子树:


      # bart create -R root-directory
      
    • 通过指定一个或多个文件名:


      # bart create -I filename...
      

      例如:


      # bart create -I /etc/system /etc/passwd /etc/shadow
      
    • 通过使用 rules 文件:


      # bart create -r rules-file
      
  4. 检查清单内容。

  5. 保存清单以便将来使用。


示例 5–2 通过指定子树创建清单

此示例说明了如何创建仅包含有关 /etc/ssh 子树中文件的信息的清单。


# bart create -R /etc/ssh

! Version 1.0

! Saturday, November 29, 2003 (14:05:36)

# Format:

#fname D size mode acl dirmtime uid gid

#fname P size mode acl mtime uid gid

#fname S size mode acl mtime uid gid

#fname F size mode acl mtime uid gid contents

#fname L size mode acl lnmtime uid gid dest

#fname B size mode acl mtime uid gid devnode

#fname C size mode acl mtime uid gid devnode

/ D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f81eab9 0 3

/ssh_config F 861 100644 user::rw-,group::r--,mask:r--,

other:r-- 3f81e504 0 3 422453ca0e2348cd9981820935600395

/ssh_host_dsa_key F 668 100600 user::rw-,group::---,mask:---,

other:--- 3f81eab9 0 0 5cc28cdc97e833069fd41ef89e4d9834

/ssh_host_dsa_key.pub F 602 100644 user::rw-,group::r--,mask:r--,

other:r-- 3f81eab9 0 0 16118c736995a4e4754f5ab4f28cf917

/ssh_host_rsa_key F 883 100600 user::rw-,group::---,mask:---,

other:--- 3f81eaa2 0 0 6ff17aa968ecb20321c448c89a8840a9

/ssh_host_rsa_key.pub F 222 100644 user::rw-,group::r--,mask:r--,

other:r-- 3f81eaa2 0 0 9ea27617efc76058cb97aa2caa6dd65a

.

.

.


示例 5–3 通过指定文件名自定义清单

此示例说明了如何创建仅列出有关系统上 /etc/passwd/etc/shadow 文件的信息的清单。


# bart create -I /etc/passwd /etc/shadow

! Version 1.0

! Monday, December 15, 2003 (16:28:55)

# Format:

#fname D size mode acl dirmtime uid gid

#fname P size mode acl mtime uid gid

#fname S size mode acl mtime uid gid

#fname F size mode acl mtime uid gid contents

#fname L size mode acl lnmtime uid gid dest

#fname B size mode acl mtime uid gid devnode

#fname C size mode acl mtime uid gid devnode

/etc/passwd F 542 100444 user::r--,group::r--,mask:r--,

other:r-- 3fcfd45b 0 3 d6

84554f85d1de06219d80543174ad1a

/etc/shadow F 294 100400 user::r--,group::---,mask:---,

other:--- 3f8dc5a0 0 3 fd

c3931c1ae5ee40341f3567b7cf15e2

下面以比较的方式列出了同一系统上 /etc/passwd /etc/shadow 文件的 ls - al 命令的标准输出。


# ls -al /etc/passwd

-r--r--r--   1 root     sys          542 Dec  4 17:42 /etc/passwd

# ls -al /etc/shadow

-r--------   1 root     sys          294 Oct 15 16:09 /etc/shadow


示例 5–4 通过使用 Rules 文件自定义清单

此示例说明了如何通过使用 rules 文件仅列出 /etc 目录中的文件来创建清单。同一个 rules 文件还包括由 bart compare 命令用于监视 /etc/system 文件的 acl 属性更改的指令。


Procedure如何比较同一系统在一段时间内的清单

当您要监视同一系统在一段时间内的文件层更改时,请使用此过程。此类清单可以帮助找到损坏或异常的文件,检测安全性破坏,或对系统的性能问题进行疑难解答。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建系统上要监视的文件的控制清单。


    # bart create -R /etc > control-manifest
    
  3. 在每次需要监视系统更改时创建一个在准备方式上与控制清单完全相同的测试清单。


    # bart create -R /etc > test-manifest
    
  4. 将控制清单与测试清单进行比较。


    # bart compare options control-manifest  test-manifest > bart-report
    
    -r

    此比较的 rules 文件的名称。将 -r 选项和 一起使用意味着从标准输入中读取指令。

    -i

    允许用户从命令行设置全局 IGNORE 指令。

    -p

    生成用于进行程序分析的标准非本地化输出的程序模式。

    control-manifest

    控制系统的 bart create 命令输出。

    test-manifest

    测试系统的 bart create 命令输出。

  5. 检查 BART 报告中的异常情况。


示例 5–5 比较同一系统在一段时间内的清单

此示例说明了如何监视两个时间点之间 /etc 目录中发生的更改。此类比较使您可以迅速确定系统上的重要文件是否受到威胁。

上面的输出指示 vfstab 文件的权限自创建了控制清单以来已发生更改。此报告可以用于检查拥有权、日期、内容或任何其他文件属性是否已发生变化。具备此类信息有助于跟踪可能的文件篡改者和更改可能发生的时间。


Procedure如何比较不同系统的清单与控制系统的清单

您可以运行系统间比较,这样可以迅速确定在基准系统和其他系统之间是否存在任何文件层差异。例如,如果您已经在基准系统上安装了特定版本的 Solaris 软件,并且需要了解其他系统是否也安装了相同的软件包,则可以创建那些系统的清单,然后将测试清单与控制清单进行比较。此类比较会列出与控制系统比较的每个测试系统在文件内容方面的任何差异。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建控制清单。


    # bart create options > control-manifest
    
  3. 保存控制清单。

  4. 在测试系统上,使用相同的 bart 选项创建清单,并将输出重定向到文件中。


    # bart create options > test1-manifest
    

    为测试清单选择一个特殊而有意义的名称。

  5. 将测试清单一直保存在系统的中心位置,直至准备比较清单为止。

  6. 需要比较清单时,将控制清单复制到测试清单的位置。或者,将测试清单复制到控制系统。

    例如:

    # cp control-manifest /net/test-server/bart/manifests

    如果测试系统不是已挂载 NFS 系统,则使用 FTP 或一些其他某个可靠方法将控制清单复制到测试系统。

  7. 将控制清单与测试清单进行比较并将输出重定向到文件。


    # bart compare control-manifest test1-manifest > test1.report
    
  8. 检查 BART 报告中的异常情况。

  9. 对于每个需要与控制清单比较的测试清单,重复执行步骤 4 至步骤 9。

    对于每个测试系统使用相同的 bart 选项。


示例 5–6 比较不同系统的清单与控制系统的清单

此示例介绍了如何通过比较控制清单与不同系统的测试清单来监视 /usr/bin 目录内容的更改。

上面的输出指示了 /usr/bin 目录中 su 文件的组 ID 与控制系统中的组 ID 不同。此信息有助于确定测试系统上是否安装了不同版本的软件或是否有人篡改了文件。


Procedure如何通过指定文件属性自定义 BART 报告

此过程为可选过程,它介绍了如何通过从命令行指定文件属性来自定义 BART 报告。如果创建了列出有关系统上所有文件或特定文件的信息的基准清单,则可以在需要监视特定目录、子目录、一个或多个文件的更改的时运行 bart compare 命令,并指定不同的属性。您可以通过从命令行指定不同的文件属性来针对同一清单运行不同类型的比较。

  1. 确定需要监视的文件属性。

  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 安装 Solaris 软件之后,创建控制清单。

  4. 在需要监视更改时创建测试清单。

    按照准备控制清单的方式准备测试清单。

  5. 比较清单。

    例如:


    # bart compare -i dirmtime,lnmtime,mtime control-manifest.121503 \
    
    test-manifest.010504 > bart.report.010504
    
    

    请注意,使用逗号分隔在命令行语法中指定的各个属性。

  6. 检查 BART 报告中的异常情况。

Procedure如何通过使用 Rules 文件自定义 BART 报告

此过程也是可选过程,它介绍了如何通过使用 rules 文件作为 bart compare 命令的输入来自定义 BART 报告。通过使用 rules 文件,可以自定义 BART 报告,从而使您能够灵活地为多个文件或子树指定多个属性。可以使用不同的 rules 文件来针对同一清单运行不同的比较。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定需要监视的文件和文件属性。

  3. 使用文本编辑器创建具有相应指令的 rules 文件。

  4. 安装 Solaris 软件之后,使用所创建的 rules 文件创建一个控制清单。


    # bart create -r rules-file > control-manifest
    
  5. 创建在准备方式上与控制清单完全相同的测试清单。


    # bart create -r rules-file > test-manifest
    
  6. 使用同一个 rules 文件比较控制清单与测试清单。


    # bart compare -r rules-file control-manifest test-manifest > bart.report
    
    
  7. 检查 BART 报告中的异常情况。


示例 5–7 通过使用 Rules 文件自定义 BART 报告

以下 rules 文件同时包括 bart createbart compare 命令的指令。此 rules 文件指示 bart create 命令列出有关 /usr/bin 目录内容的信息。此外,rules 文件还指示 bart compare 命令仅跟踪同一目录中大小和内容方面的更改。


# Check size and content changes in the /usr/bin directory.

# This rules file only checks size and content changes.

# See rules file example.



IGNORE all

CHECK size contents

/usr/bin

在上面的输出中,bart compare 命令报告 /usr/bin 目录中的差异。此输出指示已删除了 /usr/bin/ypcat 文件,并添加了 /usr/bin/gunzip 文件。


BART 清单、Rules 文件和报告(参考)

本节包含以下参考信息:

BART 清单文件格式

每个清单文件项均是单独的一行,具体取决于文件类型。每个项都以 fname(即文件名)开头。为了避免分析文件名中嵌入的特殊字符所导致的问题,已对文件名进行了编码。有关更多信息,请参见BART Rules 文件格式

后续字段表示以下文件属性:

type

文件类型,可能值为:

  • B 表示块设备节点

  • C 表示字符设备节点

  • D 表示目录

  • F 表示文件

  • L 表示符号链接

  • P 表示管道

  • S 表示套接字

size

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

mode

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

acl

文件的 ACL 属性。对于具有 ACL 属性的文件,它包含了 acltotext() 的输出。

uid

此项的属主的数字用户 ID。

gid

此项的属主的数字组 ID。

dirmtime

目录上次修改的时间,以秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC(国际协调时间)开始计算。

lnmtime

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

mtime

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

contents

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

dest

符号链接的目标。

devnode

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

有关 BART 清单的更多信息,请参见 bart_manifest(4) 手册页。

BART Rules 文件格式

bart 命令的输入文件为文本文件。这些文件由行组成,行中指定了要包括在清单中的文件和要包括在报告中的文件属性。同一个输入文件可同时在两项 BART 功能中使用。工具将忽略以 # 开头的行、空白行以及包含空格的行。

输入文件包含三种类型的指令:


示例 5–8 Rules 文件格式


<Global CHECK/IGNORE Directives>

<subtree1> [pattern1..]

<IGNORE/CHECK Directives for subtree1>



<subtree2> [pattern2..]

subtree3> [pattern3..]

subtree4> [pattern4..]

<IGNORE/CHECK Directives for subtree2, subtree3, subtree4>


注 –

所有指令均会按顺序进行读取,后面的指令可能会覆盖前面的指令。


每行都有一个子树指令。指令必须以绝对路径名开头,后面跟有零个或多个模式匹配语句。

Rules 文件属性

bart 命令使用 CHECKIGNORE 语句定义要跟踪或忽略的属性。每个属性都有一个关联的关键字。

属性关键字有:

all 关键字是指所有文件属性。

引用语法

BART 所用的 rules 文件规范语言是用于表示非标准文件名的标准 UNIX 引用语法。嵌入的制表符、空格、换行符或特殊字符以八进制格式编码,以保证工具能够读取文件名。这种不一致的引用语法会阻止在命令管道中正确处理某些文件名,如包含嵌入的回车的文件名。使用 rules 规范语言可表达复杂的文件名过滤条件,这些条件如果仅使用 shell 语法会很难并且无法有效表达。

有关 BART rules 文件或 BART 所用的引用语法的更多信息,请参见 bart_rules(4) 手册页。

BART 报告

在缺省模式下,bart compare 命令会检查系统上安装的除已修改的目录时间标记 (dirmtime) 外所有文件,如以下示例所示:


CHECK all

IGNORE	dirmtime

如果提供了 rules 文件,则全局指令 CHECK allIGNORE dirmtime 会按照以上顺序自动前置到 rules 文件之前。

BART 输出

将返回以下退出值:

0

成功

1

处理文件时出现非致命错误,如权限问题

>1

出现致命错误,如无效的命令行选项

报告机制可提供两种类型的输出:详细输出和程序输出:

有关 bart 命令支持的属性的列表,请参见Rules 文件属性

有关 BART 的更多信息,请参见 bart(1M) 手册页。