*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> mtree (8)              
Title
Content
Arch
Section
 

MTREE(8)

Contents


NAME    [Toc]    [Back]

     mtree - map a directory hierarchy

SYNOPSIS    [Toc]    [Back]

     mtree [-cdeilnqrtUux] [-f spec] [-K keywords] [-k  keywords]
[-p path]
           [-s seed]

DESCRIPTION    [Toc]    [Back]

     The  utility mtree 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       Print a specification for the file hierarchy to the
standard output.


     -d      Ignore everything except directory type files.

     -e      Don't complain about files that are in the file  hierarchy, but
             not in the specification.

     -f spec
             Read  the  specification  from file spec, instead of
from the standard
 input.

     -i      Indents the output 4 spaces each  time  a  directory
level is descended
  when  creating  a specification with the -c
option.  This
             does not affect either the /set  statements  or  the
comment before
             each  directory.  It does however affect the comment
before the
             close of each directory.

     -K keywords
             Add the specified (whitespace  or  comma  separated)
keywords to the
             current set of keywords.

     -k keywords
             Use the ``type'' keyword plus the specified (whitespace or comma
             separated) keywords instead of the  current  set  of
keywords.

     -l       Do  ``loose''  permissions  checks,  in  which more
stringent permissions
 will match less stringent ones.  For  example,
a file marked
             mode   0444   will  pass  a  check  for  mode  0644.
``Loose'' checks apply
 only to read, write and execute  permissions  --
in particular,
             if  other bits like the sticky bit or suid/sgid bits
are set either
 in the specification or the file, exact  checking will be
             performed.   This  flag  may  not be set at the same
time as the -u
             or -U flags.

     -n      Do not emit pathname comments when creating a specification.
             Normally  a comment is emitted before each directory
and before
             the close of that directory when using  the  -c  option.

     -p path
             Use  the  file  hierarchy rooted in path, instead of
the current directory.


     -q      Quiet mode.  Do not complain when a ``missing''  directory cannot
             be  created  because it already exists.  This occurs
when the directory
 is a symbolic link.

     -r      Remove any files in the file hierarchy that are  not
described in
             the specification.

     -s seed
             Display a single checksum to the standard error output that represents
 all of the files for which the keyword cksum
was specified.
   The  checksum  is  seeded with the specified
value.

     -t      If a file's timestamp is different from the specification,
             ``touch'' it to match the specification (and list as
modified).

     -U      Modify the owner, group, and permissions of existing
files to
             match  the  specification and create any missing directories.  User,
 group, and permissions must all be specified for
missing directories
 to be created.  Exit with a status of 0 on
success, 1
             if any error occurred; a mismatch is not  considered
an error if
             it was corrected.

     -u       Same  as  the -U option except a status of 2 is returned if the
             file hierarchy did not match the specification.

     -x      Don't descend below mount points in the file hierarchy.

     Specifications  are  mostly  composed of ``keywords'' (i.e.,
strings 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:

     cksum       The checksum of the file using the default algorithm specified
 by the cksum(1) utility.

     flags        The  current  file's flags (whitespace or comma
separated) in
                 symbolic form as specified by  chflags(1).   The
string
                 ``none''  may  be used to indicate that no flags
should be set
                 on the file.

     gid         The file group as a numeric value.

     gname       The file group as a symbolic name.

     ignore      Ignore any file hierarchy below this file.

     md5digest   The MD5 message digest of the file.

     mode        The current file's permissions as a numeric (octal) or symbolic
 value.

     nlink       The number of hard links the file is expected to
have.

     nochange    Do not  change  the  attributes  (owner,  group,
mode, etc) on a
                 file or directory.

     optional     The  file is optional; don't complain about the
file if it's
                 not in the file hierarchy.

     rmd160digest
                 The RIPEMD-160 message digest of the file.

     sha1digest  The SHA-1 message digest of the file.

     uid         The file owner as a numeric value.

     uname       The file owner as a symbolic name.

     size        The size, in bytes, of the file.

     link        The file the symbolic link is expected to reference.

     time        The last modification time of the file.

     type         The  type of the file; may be set to any one of
the following:

                 block       block special device
                 char        character special device
                 dir         directory
                 fifo        FIFO
                 file        regular file
                 link        symbolic link
                 socket      socket

     The default set of keywords  are  gid,  mode,  nlink,  size,
link, time, and
     uid.

     There are four types of lines in a specification.

     The  first  type  of line sets a global value for a keyword,
and consists of
     the string ``/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.

     The second type of line unsets keywords and consists of  the
string
     ``/unset'',  followed by whitespace, followed by one or more
keywords,
     separated by whitespace.

     The third type of line is a file specification and  consists
of a file
     name,  followed  by  whitespace,  followed  by  zero or more
whitespace separated
 keyword/value pairs.  The file name may be preceded by
whitespace
     characters.   The  file name may contain any of the standard
file name
     matching characters (``['',  ``]'',  ``?'',  or  ``*''),  in
which case files
     in  the  hierarchy will be associated with the first pattern
that they
     match.

     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.

     All  paths  are relative.  Specifying a directory will cause
subsequent
     files to be searched for in that directory hierarchy.  Which
brings us to
     the  last type of line in a specification: a line containing
only the
     string ``..'' causes the current directory  path  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.  A
     status of 2 is converted to a status of 0 if the  -U  option
is used.

FILES    [Toc]    [Back]

     /etc/mtree  system specification directory

EXAMPLES    [Toc]    [Back]

     To  detect system binaries that have been ``trojan horsed'',
it is recommended
 that mtree -K sha1digest be run on the file  systems,
and a copy of
     the  results stored on a different machine, or, at least, in
encrypted
     form.  The output file itself should be digested  using  the
sha1(1) utility.
   Then,  periodically,  mtree  and sha1(1) should be run
against the online
 specifications.  While it is possible for the bad  guys
to change the
     on-line  specifications  to  conform to their modified binaries, it is believed
 to be impractical for them to create a modified specification
     which has the same SHA1 digest as the original.

     The  -d  and -u options can be used in combination to create
directory hierarchies
 for distributions and other such things; the files
in
     /etc/mtree  were  used to create almost all directories in a
normal binary
     distribution.

SEE ALSO    [Toc]    [Back]

      
      
     chgrp(1), chmod(1), cksum(1),  md5(1),  rmd160(1),  sha1(1),
stat(2),
     fts(3), md5(3), rmd160(3), sha1(3), chown(8)

HISTORY    [Toc]    [Back]

     The mtree utility appeared in 4.3BSD-Reno.

OpenBSD      3.6                        December     11,     1993
[ Back ]
 Similar pages
Name OS Title
mkdirhier Tru64 makes a directory hierarchy
find Linux search for files in a directory hierarchy
MrmOpenHierarchy IRIX Allocates a hierarchy ID and opens all the UID files in the hierarchy
MrmOpenHierarchy HP-UX Allocates a hierarchy ID and opens all the UID files in the hierarchy
MrmOpenHierarchyPerDisplay HP-UX Allocates a hierarchy ID and opens all the UID files in the hierarchy
MrmOpenHierarchy Tru64 Allocates a hierarchy ID and opens all the UID files in the hierarchy
MrmOpenHierarchyPerDisplay Tru64 Allocates a hierarchy ID and opens all the UID files in the hierarchy
MrmOpenHierarchyPerDisplay IRIX Allocates a hierarchy ID and opens all the UID files in the hierarchy
lndir Tru64 create a shadow directory of symbolic links to another directory tree
lndir OpenBSD create a shadow directory of symbolic links to another directory tree
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service