.\" Copyright (c) 1989, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" From: @(#)mtree.8 8.2 (Berkeley) 12/11/93 .\" %Id: mtree.8,v 1.13 1998/06/10 06:45:08 peter Exp % .\" jpman %Id: mtree.8,v 1.3 1997/08/16 13:31:00 horikawa Stab % .\" .Dd February 9, 1995 .Dt MTREE 8 .Os .Sh 名称 .Nm mtree .Nd ディレクトリ階層をマップする .Sh 書式 .Nm mtree .Op Fl cdeinrUux .Op Fl f Ar spec .Op Fl K Ar keywords .Op Fl k Ar keywords .Op Fl p Ar path .Op Fl s Ar seed .Sh 解説 .Nm は、カレントディレクトリをルートとするファイル階層を、 標準入力から読み込んだファイル階層記述と比較します。 .\" ↑原文では単に "specification" となっているが、日本語に訳すと .\" わかりにくいので、「ファイル階層記述」という語をあてている。 .\" 以下も同様。 -- jpman J.Sakai その記述とマッチしない特性をもつファイルや、 実際のファイル階層あるいはファイル階層記述のいずれかから欠落しているファイル に関するメッセージを標準出力に出力します。 .Pp 以下のオプションがあります: .Bl -tag -width flag .It Fl c ファイル階層の記述を標準出力に出力します。 .It Fl d ディレクトリ型以外のファイルは全て無視します。 .It Fl e ファイル階層には存在するが、ファイル階層記述に存在しないファイルが あっても警告しません。 .It Fl f Ar file ファイル階層記述を、標準入力からではなく、ファイル .Ar file から読み込みます。 .It Fl i .Fl c オプションでファイル階層記述を作成する際、 ディレクトリレベルを一つ下りる毎に空白 4 つ分ずつインデントして出力します。 各ディレクトリ前に出力される /set 文やコメントには影響を与えませんが、 各ディレクトリの最後に出力されるコメントには影響を及ぼします。 .It Fl K Ar keywords 指定した .Ar keywords (空白あるいはコンマで区切ったもの) を 現在のキーワード集合に追加します。 .It Fl k Ar keywords 現在のキーワード集合の代わりに、 ``type'' キーワードおよび 指定した .Ar keywords (空白あるいはコンマで区切ったもの) を使用します。 .It Fl n ファイル階層記述作成の際、パス名コメントを出力しません。 .Fl c オプション使用時は通常、各ディレクトリの前後にコメントが出力されます。 .It Fl p Ar path ファイル階層のルートディレクトリを、カレントディレクトリではなく .Ar path とします。 .It Fl r ファイル階層記述に記載されていないファイル階層に含まれるファイルを 全て削除します。 .It Fl s Ar seed キーワード .Cm cksum が指定されている全ファイルに対する単一のチェックサムを 標準エラー出力に出力します。 チェックサムのシードには指定された値が用いられます。 .It Fl U 既存ファイルの所有者、グループおよびパーミッションを ファイル階層記述に合わせて修正し、欠落しているディレクトリを作成します。 欠落ディレクトリを作成するために、ユーザ、グループおよびパーミッションの 全てを指定しなければなりません。 成功するとステータス 0 で終了し、 何らかのエラーが発生すると 1 で終了します。 ミスマッチがあっても、それが訂正されればエラーとはみなされません。 .It Fl u オプション .Fl U と同様ですが、現ファイル階層がファイル階層記述とマッチしなければ ステータス 2 を返します。 .It Fl x ファイル階層中のマウントポイント以下に降下しません。 .El .Pp ファイル階層記述は多くの場合、「キーワード」つまり ファイルに関連した値を指定する文字列から構成されます。 どのキーワードにもデフォルト値はありません。 キーワードに値が設定されていない場合、 そのキーワードに基づいたチェックは行われません。 .Pp 現在サポートされているキーワードは以下の通りです: .Bl -tag -width Cm .It Cm cksum .Xr cksum 1 ユーティリティで規定されるデフォルトアルゴリズムを用いた ファイルのチェックサム。 .It Cm ignore このファイル以下のファイル階層を無視します。 .It Cm gid 数値で指定したファイルのグループ。 .It Cm gname シンボル名で指定したファイルのグループ。 .It Cm md5digest ファイルの MD5 メッセージダイジェスト。 .It Cm mode 数値 (8 進数) あるいはシンボル値で指定した現ファイルのパーミッション。 .It Cm nlink ファイルが持っているはずのハードリンク数。 .It Cm nochange このファイルもしくはディレクトリが存在することのみ確認し、 他の属性は無視します。 .It Cm uid 数値で指定したファイルの所有者。 .It Cm uname シンボル名で指定したファイルの所有者。 .It Cm size ファイルサイズ (バイト数)。 .It Cm link シンボリックリンクが指し示しているはずのファイル。 .It Cm time ファイルの最終修正時刻。 .It Cm type ファイルタイプ。以下のいずれかを指定します: .sp .Bl -tag -width Cm -compact .It Cm block ブロック型スペシャルデバイス .It Cm char 文字型スペシャルデバイス .It Cm dir ディレクトリ .It Cm fifo FIFO .It Cm file 通常ファイル .It Cm link シンボリックリンク .It Cm socket ソケット .El .El .Pp デフォルトのキーワード集合は .Cm gid , .Cm mode , .Cm nlink , .Cm size , .Cm link , .Cm time , .Cm uid です。 .Pp ファイル階層記述には 4 つのタイプの行があります。 .Pp 1 つめのタイプの行はキーワードに大域的な値を設定するもので、 文字列 ``/set'' とそれに続く空白、そしてキーワードとその値のペアの集合を 空白で区切ったものから構成されます。 キーワードとその値のペアはキーワードとそれに続く等号 (``='')、 そして値から成り、空白は含みません。 一旦キーワードが設定されると、再設定あるいは設定解除されるまで その値は変化しません。 .Pp 2 つめのタイプの行はキーワードの設定を解除するもので、 文字列 ``/unset'' とそれに続く空白、そして 1 つ以上のキーワードを 空白で区切ったものから構成されます。 .Pp 3 つめのタイプの行はファイル記述を行うもので、 ファイル名とそれに続く空白、そしてゼロ個以上のキーワードと値のペアを 空白で区切ったものから構成されます。 ファイル名の先頭には空白があっても構いません。 ファイル名には 標準的なファイル名マッチング文字 (``['', ``]'', ``?'', ``*'') が含まれて いてもよく、その場合、そのファイル階層に存在するファイルは、 マッチする最初のパターンと関連づけられます。 .Pp 各キーワードと値のペアはキーワードと等号 (``='')、そして そのキーワードの値から構成され、空白は含みません。 これらの値は、対応するキーワードの大域的な値を変更しませんが、 大域的な値に優先します。 .Pp パスは全て相対指定です。 ディレクトリを指定すると、そのディレクトリ階層の中で 更にファイルが検索されます。 これがファイル階層記述における 4 つめのタイプの行です: 文字列 .Dq Nm \&.. だけが含まれる行は、カレントディレクトリパスを 1 レベル上に上げることを 意味します。 .Pp 空行および最初の非空白文字がハッシュ記号 (``#'') であるような行は無視されます。 .Pp .Nm は成功するとステータス 0 で終了し、何らかのエラーが生じると 1 で終了します。 また、ファイル階層がファイル階層記述とマッチしない場合はステータス 2 で 終了します。 ただしオプション .Fl U が指定されている場合は、ステータス 2 はステータス 0 に変換されます。 .Sh 使用例 「トロイの木馬」に感染したシステムバイナリを検出するには、 以下のように操作することを推奨します。 ファイルシステムに対して .Nm .Fl K .Cm md5digest を実行し、その結果のコピーを別マシンか、少なくとも暗号化した形式で ストアします。 出力ファイル自身は .Xr md5 1 ユーティリティを用いてダイジェストを作成します。 そして定期的に .Nm と .Xr md5 1 をオンラインのファイル階層記述に対して走らせます。 クラッカーが手を加えたバイナリに合わせて オンラインのファイル階層記述を変更することは 可能ですが、オリジナルと同じ MD5 ダイジェストをもつ記述を作成するのは 非現実的だと考えらていれます。 .Pp .Fl d オプションおよび .Fl u オプションを組み合わせると、ソフトウェア配布やそれに類する処理のために ディレクトリ階層を作成するのに用いることができます。 .Pa /etc/mtree に置かれたファイル群は、この .Tn FreeBSD 配布のほとんど全てのディレクトリを作成するのに用いられました。 .Sh 関連ファイル .Bl -tag -width /etc/mtree -compact .It Pa /etc/mtree システムのファイル階層記述ディレクトリ .El .Sh 関連項目 .Xr chgrp 1 , .Xr chmod 1 , .Xr cksum 1 , .Xr md5 1 , .Xr stat 2 , .Xr fts 3 , .Xr md5 3 , .Xr chown 8 .Sh 歴史 .Nm ユーティリティは .Bx 4.3 Reno で登場しました。 MD5 ダイジェスト機能は、 .Xr cksum 1 をだますプログラムが広範囲に悪用されたのに対抗して .Fx 2.1 で追加されました。