EN JA
MTREE(8)
MTREE(8) FreeBSD System Manager's Manual MTREE(8)

名称

mtreeディレクトリ階層をマップする

書式

mtree [ -LPUcdeinqruxw][ -f  spec][ -K  keywords][ -k  keywords][ -p  path][ -s  seed][ -X  exclude-list]

解説

mtree ユーティリティは、標準入力から読み込まれた仕様 (specification) に対してカレントディレクトリをルートとするファイル階層を比較します。メッセージは、特性が仕様と一致しないか、またはファイル階層または仕様のいずれかが失われている、あらゆるファイルに対して標準出力に書き込まれます。

オプションは、次の通りです:

-L
ファイル階層のシンボリックリンクをすべてたどります。
-P
あらゆる比較でシンボリックリンク自体を考慮する代わりにファイル階層のシンボリックリンクをたどりません。これは、デフォルトです。
-U
仕様と一致し、あらゆる不足しているディレクトリまたはシンボリックリンクを作成するために、既存のファイルの所有者、グループ、パーミッションと更新時刻を修正します。ユーザ、グループとパーミッションは、作成される不足しているディレクトリのためにすべて指定されなければなりません。修正された不一致は、エラーと見なされません。
-c
標準出力にファイル階層のための仕様を印刷 (出力) します。
-d
ディレクトリのタイプのファイル以外、すべてを無視します。
-e
仕様ではなく、ファイル階層にあるファイルに関するエラーを出しません。
-i
-c オプションで仕様を作成するとき、ディレクトリのレベルが下られるごとに、 4 つの空白を出力して段付けします。これは、各ディレクトリの前に /set 文またはコメントのいずれかに影響しません。しかしながら、それは、各ディレクトリの終了の前にコメントに影響します。
-n
仕様を作成するとき、パスネームのコメントを出力しません。通常、コメントは、 -c オプションを使用するとき、各ディレクトリの前とそのディレクトリのクローズの前に出力されます。
-q
静かなモード。それが既に存在するので、“不足している”ディレクトリを作成することができないとき、エラーを出しません。ディレクトリがシンボリックリンクであるとき、これが、生じます。
-r
仕様に記述されていないファイル階層のあらゆるファイルを削除します。
-u
ファイル階層が仕様と一致しなかったなら、2 のステータスが返されることを除いて、 -U と同じです。
-w
いくつかのエラーを致命的ではない警告にします。
-x
ファイル階層のマウントポイント以下に下りません。
-f file
標準入力からの代わりに、 file から仕様を読み込みます。

このオプションが 2 度指定されるなら、2 つの仕様は、ファイル階層にではなくお互いに比較されます。仕様は、 -c を使用して生成された出力のようにソートされます。出力形式は、この場合、いくらか comm(1) を連想させ、それぞれ、0、1 つと 2 つのタブ文字が前に付けられら、 "最初の仕様のみ"、"2 番目の仕様のみ"と "異なった"カラムがあります。 "異なる"カラムの各エントリは、各仕様から 1 つ、2 行のラインを占有します。

-K keywords
指定された (空白類またはコンマで区切られた) keywords をキーワードの現在のセットに追加します。
-k keywords
キーワードの現在のセットの代わりに、``type'' キーワードと指定された (空白類またはコンマで区切られた) keywords を使用します。
-p path
カレントのディレクトリの代わりに path を root とするファイル階層を使用します。
-s seed
キーワード cksum が指定されたファイルをすべてを表わす標準エラー出力に単一のチェックサムを表示します。チェックサムは、指定された値でシード (種) されます。
-X exclude-list
指定されたファイルは、1 つを 1 行で、仕様から除外される fnmatch(3) パターンマッチングファイルを含んでいます。パターンが‘ /’文字を含んでいるなら、それは、(開始するディレクトリと相対の) すべてのパス名に対して照合されます。そうでなければ、それは、基底名 (basename) に対してのみ照合されます。コメントは、 exclude-list ファイルで許可されません。

仕様のほとんどは、``keywords'' からなります、すなわち、ファイルに関連する値を指定する文字列。キーワードは、デフォルト値がなく、キーワードに設定された値がないなら、それに基づいたチェックは、行なわれません。

現在サポートされたキーワードは、次の通りです:

cksum
cksum(1) ユーティリティによって指定されたデフォルトのアルゴリズムを使用するファイルのチェックサム。
flags
シンボリック名としてのファイルのフラグ。これらの名前の情報については、 chflags(1) を参照してください。フラグが設定されていないなら、文字列“none”は、現在のデフォルトを上書きするために使用されます。
ignore
このファイル以下のあらゆるファイル階層を無視します。
gid
数値としてのファイルグループ。
gname
シンボル名としてのファイルグループ。
md5digest
ファイルの MD5 メッセージダイジェスト。
sha1digest
ファイルの FIPS 160-1 (“SHA-1”) メッセージダイジェスト。
sha256digest
ファイルの FIPS 180-2 (“SHA-256”) メッセージダイジェスト。
ripemd160digest
ファイルの RIPEMD160 メッセージダイジェスト。
mode
数値 (8 進数) またはシンボル値としての現在のファイルのパーミッション。
nlink
ファイルにあることが予想されるハードリンクの数。
nochange
このファイルまたはディレクトリが存在することを確かめますが、そうでなければ、属性をすべて無視します。
optional
ファイルは、オプションです。それがファイル階層にないなら、ファイルに関してエラーを出しません。
uid
数値としてのファイル所有者。
uname
シンボル名としてのファイル所有者。
size
ファイルのバイト単位のサイズ。
link
シンボリックリンクが参照すると予想されるファイル。
time
秒とナノ秒単位のファイルの最終の更新時刻。値は、ピリオドの後にピリオド文字と正確に 9 つの数字を含んでいるべきです。
type
ファイルのタイプ。次のいずれか 1 つに設定されます:

block
ブロック特殊デバイス
char
文字特殊デバイス
dir
ディレクトリ
fifo
FIFO
file
通常ファイル
link
シンボリックリンク
socket
ソケット

キーワードのデフォルトの組は、 flags, gid, link, mode, nlink, size, timeuid です。

仕様に 4 つのタイプの行があります。

最初のタイプの行は、キーワードのためのグローバルな値を設定し、空白類によって区切られる、キーワード/値のペアの組が後続する、空白類が後続する文字列 ``/set'' から成ります。キーワード/値のペアは、空白類の文字なしで、キーワードに等号 (``='') が続き値が続くものから成ります。いったんキーワードが設定されると、その値は、リセットするか未設定になるまで変更されません。

2 番目のタイプの行は、キーワードを未設定とし、空白類によって区切られる、文字列 ``/unset'' に空白類が続き、1 つ以上のキーワードが続くものから成ります。

3 番目のタイプの行は、ファイルの仕様で、ファイル名に空白類が続き、 0 以上の空白類で区切られたキーワード/値のペアが続いたものから成ります。ファイル名は、空白類文字に先行します。ファイル名は、文字 (``['', ``]''、``?'' または ``*'') と一致する標準のファイル名のいずれかを含み、その場合に、階層中のファイルは、それらが一致する最初のパターンに関連しています。

キーワード/値のペアの各々は、空白類文字なしで、キーワードに等号 (``='') が続き、キーワードの値が続くものから成ります。これらの値は、変更せずに、対応するキーワードのグローバルな値を上書きします。

すべてのパスは、相対的です。ディレクトリを指定することによって、続くファイルは、そのディレクトリ階層で探索されます。どれが仕様の最後のタイプの行をもたらすか: 文字列“ ..”だけを含んでいる行によって、カレントディレクトリのパスは、1 つレベルを上げます。

空行と最初の空白類でない文字がハッシュマーク (``#'') である行は、無視されます。

mtree ユーティリティは、成功すれば、0 のステータスで終了し、何らかのエラーが生じたなら、1 のステータスで終了し、ファイル階層が仕様と一致しなかったなら、2 のステータスで終了します。 -U オプションが使用されるなら、2 のステータスは、0 のステータスに変換されます。

関連ファイル

/etc/mtree
システム仕様ディレクトリ

終了ステータス

The mtree utility exits 0 on success, and >0 if an error occurs.

使用例

``trojan horse'' (トロイの木馬) であったシステムバイナリを検出するために、ファイルシステムで実行される mtree -K sha256digest と異なるマシン、または少なくとも暗号化された形式で格納された結果のコピーが推奨されます。出力ファイルそれ自体は、 sha256(1) ユーティリティを使用してダイジェストされるべきです。その後、周期的に、 mtreesha256(1) は、オンライン仕様に対して実行されるべきです。それらの修正されたバイナリに適合するオンライン仕様を変更する悪いやつらのために可能である一方、オリジナルとして同じ SHA-256 ダイジェストがある修正された仕様を作成するそれらのために実用的でないと考えられます。

配布と他のもののに対してディレクトリ階層を作成するために -d-u オプションを組み合わせて使用することができます。 /etc/mtree のファイルは、この FreeBSD 配布のほとんどすべてのディレクトリを作成するために使用されました。

/etc/mtree スタイルの BSD.*.dist ファイルを作成するために、 mtree -c -d -i -n -k uname,gname,mode,nochange. を使用します。

歴史

mtree ユーティリティは、 4.3BSD-Reno で登場しました。 MD5 ダイジェストのケーパビリティは、 cksum(1) を偽造できるプログラムの広範囲の使用に応えて FreeBSD 2.1 で追加されました。 SHA-1 と RIPEMD160 ダイジェストは、新しい攻撃が MD5 の弱点を実証したように、 FreeBSD 4.0 で追加されました。 SHA-256 ダイジェストは、 FreeBSD 6.0 で追加されました。ファイルフラグのためのサポートは、 FreeBSD 4.0 で追加され、ほとんど NetBSD に由来します。
June 16, 2007 FreeBSD