MTREE(8) | System Manager's Manual | MTREE(8) |
mtree
— map a
directory hierarchy
mtree |
[-cCdDelLMPruUWx ]
[-i | -m ]
[-f spec]
[-p path]
[-k keywords]
[-K keywords]
[-R keywords]
[-E tags]
[-I tags]
[-N dbdir]
[-s seed]
[-X exclude-file] |
The mtree
utility compares the file
hierarchy rooted in the current directory against a specification read from
the standard input. Messages are written to the standard output for any
files whose characteristics do not match the specification, or which are
missing from either the file hierarchy or the specification.
The options are as follows:
-c
-d
-C
-f
spec in a format that's
easier to parse with various tools. The full path name is always printed
as the first field, and -k
,
-K
, and -R
can be used to
control which other keywords are printed, and -E
and -I
can be used to control which files are
printed.-D
-C
, except that the path name is always
printed as the last field instead of the first.-E
tags-D
.-e
-f
spec-I
tags-D
. If no inclusion list is provided, the default
is to display all files.-i
-K
keywordsall
’ is
specified, add all of the other keywords.-k
keywordsall
’ is specified, use all of the
other keywords. If the type keyword is not desired,
suppress it with -R
type.-l
-u
or
-U
flags.-L
-m
-M
-N
dbdir-p
path-P
-r
-R
keywordsall
’ is
specified, remove all of the other keywords.-s
seed-u
-i
option is
given, the schg and sappnd flags will not be set, even if specified. If
-m
is given, these flags will be reset. Exit with
a status of 0 on success, 2 if the file hierarchy did not match the
specification, and 1 if any other error occurred.-U
-u
except that a mismatch is not
considered to be an error if it was corrected.-W
-u
or -U
.-x
-X
exclude-file/
’ character, it will be
matched against entire pathnames (relative to the starting directory);
otherwise, it will be matched against basenames only. Comments are
permitted in the exclude-list file.Specifications are mostly composed of “keywords”, i.e. strings that that specify values relating to files. No keywords have default values, and if a keyword has no value set, no checks based on it are performed.
Currently supported keywords are as follows:
The following values for format are recognized: native, 386bsd, 4bsd, bsdos, freebsd, hpux, isc, linux, netbsd, osf1, sco, solaris, sunos, svr3, svr4, and ultrix.
See mknod(8) for more details.
none
’ may be used to override the
current default. Note that the schg and sappnd flags are treated specially
(see the -i
and -m
options).-E
and
-I
. These may be specified without leading or
trailing commas, but will be stored internally with them.The default set of keywords are flags, gid, link, mode, nlink, size, time, type, and uid.
There are four types of lines in a specification:
/set
’ followed by whitespace,
followed by sets of keyword/value pairs, separated by whitespace.
Keyword/value pairs consist of a keyword, followed by an equals sign
(‘=
’), followed by a value, without
whitespace characters. Once a keyword has been set, its value remains
unchanged until either reset or unset./unset
’, followed by whitespace,
followed by one or more keywords, separated by whitespace. If
‘all
’ is specified, unset all of the
keywords.The path name may be preceded by whitespace characters. The
path name may contain any of the standard path name matching characters
(‘[
’,
‘]
’,
‘?
’ or
‘*
’), in which case files in the
hierarchy will be associated with the first pattern that they match.
mtree
uses strsvis(3) (in
VIS_CSTYLE format) to encode path names containing non-printable
characters. Whitespace characters are encoded as
‘\s
’ (space),
‘\t
’ (tab), and
‘\n
’ (new line).
‘#
’ characters in path names are
escaped by a preceding backslash
‘\
’ to distinguish them from
comments.
Each of the keyword/value pairs consist of a keyword, followed
by an equals sign (‘=
’), followed
by the keyword's value, without whitespace characters. These values
override, without changing, the global value of the corresponding
keyword.
The first path name entry listed must be a directory named
‘.
’, as this ensures that
intermixing full and relative path names will work consistently and
correctly. Multiple entries for a directory named
‘.
’ are permitted; the settings
for the last such entry override those of the existing entry.
A path name that contains a slash
(‘/
’) that is not the first
character will be treated as a full path (relative to the root of the
tree). All parent directories referenced in the path name must exist.
The current directory path used by relative path names will be updated
appropriately. Multiple entries for the same full path are permitted if
the types are the same (unless -M
is given, and
then the types may differ); in this case the settings for the last entry
take precedence.
A path name that does not contain a slash will be treated as a relative path. Specifying a directory will cause subsequent files to be searched for in that directory hierarchy.
..
’ which causes the current
directory path (used by relative paths) to ascend one level.Empty lines and lines whose first non-whitespace character is a
hash mark (‘#
’) are ignored.
The mtree
utility exits with a status of 0
on success, 1 if any error occurred, and 2 if the file hierarchy did not
match the specification.
To detect system binaries that have been “trojan
horsed”, it is recommended that mtree
be run
on the file systems, and a copy of the results stored on a different
machine, or, at least, in encrypted form. The seed for the
-s
option should not be an obvious value and the
final checksum should not be stored on-line under any circumstances! Then,
periodically, mtree
should be run against the
on-line specifications and the final checksum compared with the previous
value. While it is possible for the bad guys to change the on-line
specifications to conform to their modified binaries, it shouldn't be
possible for them to make it produce the same final checksum value. If the
final checksum value changes, the off-line copies of the specification can
be used to detect which of the binaries have actually been modified.
The -d
and -u
options can be used in combination to create directory hierarchies for
distributions and other such things.
chflags(1), chgrp(1), chmod(1), cksum(1), stat(2), fnmatch(3), fts(3), strsvis(3), chown(8), mknod(8)
The mtree
utility appeared in
4.3BSD-Reno. The optional keyword
appeared in NetBSD 1.2. The
-U
flag appeared in NetBSD
1.3. The flags and md5 keywords,
and -i
and -m
flags appeared
in NetBSD 1.4. The device,
rmd160, sha1, tags,
and all
keywords, -D
, -E
,
-I
, -l
,
-L
, -N
,
-P
, -R
,
-W
, and -X
flags, and
support for full paths appeared in NetBSD 1.6. The
sha256, sha384, and
sha512 keywords appeared in NetBSD
3.0.
September 12, 2006 | Debian |