This procedure explains how to create a baseline, or control, manifest for comparison. Use this type of manifest when you are installing many systems from a central image. Or, use this type of manifest to run comparisons when you want to verify that the installations are identical. For more information about control manifests, see BART Manifest. To understand the format conventions, see Example 24, Explanation of the BART Manifest Format.
Before You Begin
You must assume the root role. For more information, see Using Your Assigned Administrative Rights in Securing Users and Processes in Oracle Solaris 11.3.
# bart create options > control-manifest
Specifies the root directory for the manifest. All paths specified by the rules are interpreted relative to this directory. All paths reported in the manifest are relative to this directory.
Accepts a list of individual files to be cataloged, either on the command line or read from standard input.
Is the name of the rules file for this manifest. A - (minus sign) argument reads the rules file from standard input.
Turns off content signatures for all regular files in the file list. This option can be used to improve performance. Or, you can use this option if the contents of the file list are expected to change, as in the case of system log files.
For an explanation of the format, see Example 24, Explanation of the BART Manifest Format.
One way to protect system manifests is to place them in a directory that only the root account can access.
# mkdir /var/adm/log/bartlogs # chmod 700 /var/adm/log/bartlogs # mv control-manifest /var/adm/log/bartlogs
Choose a meaningful name for the manifest. For example, use the system name and date that the manifest was created, as in mach1-120313.
In this example, an explanation of the manifest format follows the sample output.
# bart create ! Version 1.1 ! HASH SHA256 ! Saturday, September 07, 2013 (22:22:27) # 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 3ebc418eb5be3729ffe7e54053be2d33ee884205502c81ae9689cd8cca5b0090 0 0 . . . /zone D 512 40755 user::rwx group::r-x,mask:r-x,other:r-x 3f81e892 154de3e7bdfd0d57a074c9fae0896a9e2e04bebfe5e872d273b063319e57f334 0 0 . . .
Each manifest consists of a header and file entries. Each file entry is a single line, depending on the file type. For example, for each file entry in the preceding output, type F specifies a file and type D specifies a directory. Also listed is information about size, content, user ID, group ID, and permissions. File entries in the output are sorted by the encoded versions of the file names to correctly handle special characters. All entries are sorted in ascending order by file name. All nonstandard file names, such as those that contain embedded newline or tab characters, quote the nonstandard characters before sorting.
Lines that begin with ! supply metadata about the manifest. The manifest version line indicates the manifest specification version. The hash line indicates the hash mechanism that was used. For more information about the SHA256 hash that is used as a checksum, see the sha2(3EXT) man page.
The date line shows the date on which the manifest was created, in date form. See the date(1) man page. Some lines are ignored by the manifest comparison tool. Ignored lines include metadata, blank lines, lines that consist only of white space, and comments that begin with #.