diff --git a/ja_JP.eucJP/man/man2/accept.2 b/ja_JP.eucJP/man/man2/accept.2 index aec6023dfd..90d2ef5690 100644 --- a/ja_JP.eucJP/man/man2/accept.2 +++ b/ja_JP.eucJP/man/man2/accept.2 @@ -1,153 +1,158 @@ .\" Copyright (c) 1983, 1990, 1991, 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. .\" .\" @(#)accept.2 8.2 (Berkeley) 12/11/93 -.\" %FreeBSD: src/lib/libc/sys/accept.2,v 1.10.2.10 2002/02/11 02:11:52 dd Exp % +.\" %FreeBSD: src/lib/libc/sys/accept.2,v 1.10.2.11 2002/05/09 02:24:40 silby Exp % .\" .\" $FreeBSD$ .Dd December 11, 1993 .Dt ACCEPT 2 .Os .Sh 名称 .Nm accept .Nd ソケット上の接続を受け入れる .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/socket.h .Ft int .Fn accept "int s" "struct sockaddr *addr" "socklen_t *addrlen" .Sh 解説 引数 .Fa s は .Xr socket 2 で作成され、 .Xr bind 2 でアドレスにバインドされ、 .Xr listen 2 も済ませて接続を待ち受けているソケットです。 .Fn accept 呼び出しは、待ち行列上の最初の接続要求を取り出し、 .Fa s と同じプロパティの新しいソケットを作成し、 ソケットのための新しいファイル記述子を割り当てます。 接続要求が待ち行列上に存在せず、 しかもソケットが非ブロッキングとマークされていない場合、 .Fn accept は接続要求があるまで呼び出し側をブロックします。 ソケットが非ブロッキングとマークされており、 しかも待ち行列に接続要求が存在しない場合、 .Fn accept は後述のようにエラーを返します。 接続が成立したソケットは、それ以上の接続を受け入れるために 使用できません。 オリジナルのソケット .Fa s は開いたままです。 .Pp 引数 .Fa addr は結果パラメータで、 通信レイヤに既知の接続エンティティのアドレスで埋められます。 .Fa addr パラメータの正確な形式は通信が行なわれるドメインで決まります。 .Fa addrlen は、「値 - 結果」パラメータです。 これは最初は .Fa addr が指す空間のサイズを含んでいなければなりません。 戻り時には、返されるアドレスの実際の長さ (バイト単位) を含むことになります。 この呼び出しは、コネクションをベースとしたソケットタイプ、 現在では .Dv SOCK_STREAM とともに使用されます。 .Pp 読取りでソケットを .Xr select 2 することによって、 .Fn accept するソケットを選ぶことができます。 .Pp .Tn ISO または .Tn DATAKIT のような明瞭な確認が必要な特定のプロトコルでは、 .Fn accept は単に次の接続要求を待ち行列から除くだけで、 確認は行わないと考えられます。確認は、新しいファイル記述子についての 通常の読取りまたは書込みによって行うことができ、 拒絶は新しいソケットを閉じる事によって実現できます。 +.Pp +ある種のアプリケーションにおいては、内向きの接続を +.Xr accept_filter 9 +で前処理することにより、性能が向上するかもしれません。 .Sh 戻り値 システムコールはエラーがあった場合 \-1 を返します。 処理が正常に完了した場合、受け付けたソケットの 記述子である非負整数を返します。 .Sh エラー .Fn accept は次の場合に失敗します: .Bl -tag -width Er .It Bq Er EBADF 記述子が有効ではありません。 .It Bq Er EINTR .Fn accept 操作が割り込まれました。 .It Bq Er EMFILE プロセスの記述子テーブルが満杯です。 .It Bq Er ENFILE システムファイルテーブルが満杯です。 .It Bq Er ENOTSOCK 記述子がファイルを参照しておりソケットではありません。 .It Bq Er EINVAL .Xr listen 2 がソケット記述子に対して呼び出されていません。 .It Bq Er EFAULT .Fa addr パラメータがユーザアドレス空間の書込み可能な部分にありません。 .It Bq Er EWOULDBLOCK ソケットが非ブロッキングとマークされ、さらに 受け付けるべき接続要求が存在しません。 .It Bq Er ECONNABORTED 接続要求が到着しましたが、待ち行列で待機している 間に閉じてしまいました。 .El .Sh 関連項目 +.Xr accept_filter 9 , .Xr bind 2 , .Xr connect 2 , .Xr getpeername 2 , .Xr listen 2 , .Xr select 2 , .Xr socket 2 .Sh 歴史 .Fn accept 関数は .Bx 4.2 で登場しました。 diff --git a/ja_JP.eucJP/man/man2/listen.2 b/ja_JP.eucJP/man/man2/listen.2 index 6f43629190..f7dac6f2f9 100644 --- a/ja_JP.eucJP/man/man2/listen.2 +++ b/ja_JP.eucJP/man/man2/listen.2 @@ -1,120 +1,143 @@ .\" Copyright (c) 1983, 1991, 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: @(#)listen.2 8.2 (Berkeley) 12/11/93 -.\" %FreeBSD: src/lib/libc/sys/listen.2,v 1.12.2.8 2001/12/14 18:34:01 ru Exp % +.\" %FreeBSD: src/lib/libc/sys/listen.2,v 1.12.2.9 2002/05/09 02:24:40 silby Exp % .\" .\" $FreeBSD$ +.\" WORD: 3-way handshake 3 ウェイハンドシェーク (tcpdump.1) .Dd November 3, 1995 .Dt LISTEN 2 .Os .Sh 名称 .Nm listen .Nd ソケット上の接続をリスンする .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/socket.h .Ft int .Fn listen "int s" "int backlog" .Sh 解説 .Xr socket 2 で最初にソケットが作成され、 着信接続を受け入れる意思および着信接続用の待ち行列限界が .Fn listen で指定された後、接続が .Xr accept 2 で受け入れられます。 .Fn listen 呼び出しは、タイプが .Dv SOCK_STREAM または .Dv SOCK_SEQPACKET のソケットにだけ適用されます。 .Pp .Fa backlog パラメータは、延期中の接続の待ち行列を伸ばす際の最大長を定義します。 待ち行列が満杯のときに接続要求が到着すると、クライアントは .Er ECONNREFUSED を示すエラーを受信する可能性があります。 -または下層のプロトコルが再送信をサポートする場合は、 -再試行によって成功する可能性に期待して要求は無視されるかもしれません。 +TCP の場合は、接続は黙って落とされます。 +.Pp +FreeBSD 4.5 以前で syncache が導入されるまでは、 +.Fa backlog +パラメータは不完全な接続の待ち行列の長さも定義していました。 +この待ち行列には、TCP の 3 ウェイハンドシェークを完了させるべく処理中の +TCP ソケットが保持されています。 +これらの不完全な接続は、現在すべて syncache に保持され、 +これは待ち行列の長さに影響されません。 +.Fa backlog +値を増やすことによりサービス不能攻撃に対処する必要は、もはやありません。 .Pp .Xr sysctl 3 MIB 変数 .Dq Va kern.ipc.somaxconn は .Fa backlog のハードリミットを指定します。 .Va kern.ipc.somaxconn より大きい値、または 0 より小さい値が指定されている場合、 .Fa backlog の指定は無視されて .Va kern.ipc.somaxconn の値にされます。 +.Sh ACCEPT フィルタとの相互作用 +ソケットに対して accept フィルタを使用すると、 +接続済であるものの accept フィルタの基準にまだ合致しないソケットを +保持するための第 2 の待ち行列が使用されます。 +ひとたび基準に合致すれば、これらのソケットは接続完了済の待ち行列に移動され、 +accept() の対象になります。 +第 2 の待ち行列が満杯のときに新規接続が到着すると、 +accept フィルタの基準にまだ合致しない最古のソケットが終了されます。 +.Pp +この第 2 の待ち行列は、第 1 の listen 待ち行列のように、 +.Fa backlog +パラメータに従って大きさが変わります。 .Sh 戻り値 .Rv -std listen .Sh エラー .Fn listen は次の場合に処理を失敗します。 .Bl -tag -width Er .It Bq Er EBADF 引数 .Fa s が有効な記述子ではありません。 .It Bq Er ENOTSOCK 引数 .Fa s がソケットではありません。 .It Bq Er EOPNOTSUPP ソケットが、 .Fn listen をサポートするタイプではありません。 .El .Sh 関連項目 .Xr accept 2 , +.Xr accept_filter 9 , .Xr connect 2 , .Xr socket 2 , .Xr sysctl 3 , .Xr sysctl 8 .Sh 歴史 .Fn listen 関数は .Bx 4.2 で登場しました。 実行時に最大 .Fa backlog を設定できる機能、および許容できる最大値を指定する場合に負の .Fa backlog を使用する機能は .Fx 2.2 で登場しました。 diff --git a/ja_JP.eucJP/man/man7/release.7 b/ja_JP.eucJP/man/man7/release.7 index 409b90d6dc..68445b7627 100644 --- a/ja_JP.eucJP/man/man7/release.7 +++ b/ja_JP.eucJP/man/man7/release.7 @@ -1,371 +1,391 @@ .\" Copyright (c) 2002 Murray Stokely .\" 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. .\" -.\" %FreeBSD: src/share/man/man7/release.7,v 1.3.2.3 2002/04/02 09:22:27 murray Exp % +.\" %FreeBSD: src/share/man/man7/release.7,v 1.3.2.4 2002/05/10 15:22:11 matusita Exp % .\" $FreeBSD$ .\" .\" WORD: clean system まっさらのシステム[release.7] .\" .Dd March 12, 2002 .Dt RELEASE 7 .Os .Sh 名称 .Nm release .Nd "リリース構築基盤" .Sh 解説 .Fx は、ユーザが .Fx オペレーティングシステムのリリース全てを作成できるような完全な構築環境を 提供しています。 リリースを構築するために必要なツールの全ては、 CVS リポジトリ中の .Pa src/release に揃っています。 実のところ、 CD-ROM を焼く際に使える ISO イメージ、インストール用フロッピ、 FTP インストール用ディレクトリの生成をはじめとして、完全なリリースを コマンド一発で構築できます。 このコマンドは、 .Dq Li "make release" と、うまい名前が付けられています。 .Pp リリースを構築する前に、 .Xr build 7 の内容によく馴染んでおいてください。 また、 .Dq Li "make world" によるソースからのシステムアップグレードの経験も必須です。 リリース構築プロセスは、 .Dq Li "make buildworld" の結果を .Pa /usr/obj に置いておくことを要求します。 完全なシステムのためのオブジェクトファイルを、まっさらの .Xr chroot 8 環境にインストールできるようにするために、これが必要となります。 リリースを進めるには、 .Xr vn 4 (vnode ディスク) デバイスドライバがカーネルに存在する (コンパイル済み、またはモジュールとしてロードのいずれも可) ことも必要です。 .Pp この文書は、ソースコード管理、品質管理など、 リリースエンジニアリングプロセスに関するその他の側面は扱いません。 .Sh ターゲット リリース用 makefile .Pq Pa src/release/Makefile は、かなり難解です。 ほとんどの場合、 .Cm release ターゲットのことを考えるだけで済むと思います。 .\" XXX: Some sort of introduction to this list? All the others have one. .Bl -tag -width ".Cm rerelease" .It Cm release .Dq Li "make installworld" を用いて、ファイルシステムの .Xr chroot 8 環境にまっさらのシステムをインストールします。 指定したバージョンのソースコードをチェックアウトし、 .Dq Li "make world" を用いて、まっさらの環境に完全なシステムを再構築します。 そのあとに、ディストリビューション別のパッケージング(まとめ上げ)、 インストール用フロッピディスクの構築、リリース文書の構築などの 細かいステップが続きます。 .It Cm rerelease このターゲットは、リリース構築作業の結果を手で修正し、前の .Dq Li "make release" の中間結果を使い、最小のステップ数でリリースを再構築することを 想定したものです。 .It Cm floppies 新規のブートフロッピの組を作成します。 .Cm release.4 , .Cm release.8 , .Cm release.9 ターゲットを呼び、直前の .Dq Li "make release" のフロッピイメージを再作成します。 このターゲットは、カスタムブートフロッピの作成にもっとも良く使用されます。 .El .Pp .Dq Li "make release" により呼び出されるターゲットは次のとおりです。 .Bl -tag -width ".Cm release.9" .It Cm release.1 ディレクトリ .Pa ${CHROOTDIR}/R をまっさらにし、 .Xr mtree 8 を用いてシステム用のディレクトリ階層を構築します。 .It Cm release.2 システムをディストリビューション用ディレクトリにインストールします。 .It Cm release.3 .\" XXX: We build more than one kernel. We build a stripped down .\" kernel for the boot media in addition to a full GENERIC kernel. .Pa GENERIC カーネルを作り、インストールします。 .It Cm release.4 .Xr crunchgen 1 を用いて、インストール用フロッピに収容する .Dq crunched バイナリを構築します。 .It Cm release.5 合成ディストリビューションを構築し、 また、作成されたディストリビューションツリーを掃除しきれいにします。 .It Cm release.6 組み立てられたディストリビューションツリーの tarball を 生成します。 .It Cm release.7 ソースディストリビューションを作成します。 .It Cm release.8 boot フロッピ、MFS root フロッピを生成します。 .It Cm release.9 fixit フロッピを生成します。 .It Cm ftp.1 FTP インストールに適切な領域を .Pa ${CHROOTDIR}/R/ftp に整えます。 .It Cm cdrom.1 CD-ROM イメージ構築に適切な領域を .Pa ${CHROOTDIR}/R/cdrom に整えます。 .It Cm iso.1 CD-ROM リリース領域から ISO イメージを 2 つ構築します (インストール用と .Dq live ファイルシステムの 2 つ)。 デフォルトでは無効になっています。 以下の .Va MAKE_ISOS を参照してください。 .It Cm doc.1 .Fx ドキュメンテーションプロジェクトのソースドキュメント (SGML, XML) を リリースに含める HTML / テキストドキュメントに変換するために 必要なツール全てを構築します。 また、現在存在するユーザドキュメントも構築、インストールします。 これには、Handbook, FAQ, article などが含まれます。 .It Cm doc.2 リリースドキュメントを構築します。 これには、リリースノート、ハードウエアガイド、インストール作業説明書 (installation instructions) が含まれます。 .El .Sh 環境変数 指定しなければならない環境変数は以下のとおりです。 .Bl -tag -width ".Va RELEASETAG" .It Va CHROOTDIR .Xr chroot 8 環境として、全リリース構築に使用するディレクトリ。 .\" XXX: I recommend against hardcoding specific numbers like "2.3" here; .\" XXX: perhaps it should be replaced with something to the effect of .\" XXX: "we don't know how much space you'll need, but make sure you have .\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number, .\" XXX: but at least it looks less like a decree and more like an estimate. i386 アーキテクチャの場合、これが存在するファイルシステムには 少なくとも 2.3GB の空き領域が必要です。 .It Va BUILDNAME 構築するリリースの名前。 この名前は、 .Pa sys/conf/newvers.sh の中で .Va RELEASE の値を設定するのに使用します。 この値は .Xr uname 1 の出力を変更します。 .It Va CVSROOT .Fx CVS リポジトリの位置です。 このパス名は、実システムルートから参照され、 .Xr chroot 8 されたディレクトリツリーのルートからの参照では .Em ありません。 .It Ev RELEASETAG 構築するリリースに相当する CVS タグ。 未定義の場合、CVS ツリーの .Dv HEAD ( .Dq "-CURRENT スナップショット" ) から構築されます。 .El .Pp オプションの変数は次のとおりです。 .Bl -tag -width ".Va RELEASEDISTFILES" +.It Va CVSCMDARGS +.Xr cvs 1 +のコマンド +.Ic checkout +と +.Ic update +への追加の引数です。 +例えば、この変数を +.Dq Li "-D '01/01/2002 00:00:00 GMT'" +に設定して +.Dq Li "make release" +または +.Dq Li "make rerelease" +すると、 +.Xr cvs 1 +はそれぞれ +2002 年 1 月 1 日 00:00:00 GMT のソースを +チェックアウトまたはアップデートするよう +.Xr cvs 1 +に指示します。 .It Va LOCAL_PATCHES .Pa /usr/src に対するパッチファイル。 このパッチは、リリース構築を開始する前に、 .Xr chroot 8 環境で適用されます。 .It Va PATCH_FLAGS パッチファイル .Va LOCAL_PATCHES を適用する際に用いる .Xr patch 1 コマンドに渡す引数。 .It Va LOCAL_SCRIPT .Xr chroot 8 環境で、ローカルパッチ適用直後に実行されるスクリプト。 .It Va MAKE_ISOS これを定義した場合、CD-ROM ステージのディレクトリの内容から、 ブータブル ISO CD-ROM イメージを生成します。 .It Va NODOC .Dq Li YES と設定した場合、 .Fx ドキュメンテーションプロジェクトの SGML ベースのドキュメントを生成しません。 しかしながら、 .Pa src/share/doc にある最小のドキュメンテーションセットから .Dq doc ディストリビューションが依然として作成されます。 .It Va NOPORTS .Dq Li YES と設定した場合、Ports Collection はリリースから省略されます。 .It Va NOPORTREADMES これを定義した場合、 Ports Collection の各 port に対する readme ファイルを作成しません。 デフォルトの動作は、 .Dq Li "make release" が .Dq Li "make readmes" を .Pa ${CHROOTDIR}/usr/ports から実行するというものであり、莫大な時間を費すことになります。 .It Va RELEASEDISTFILES ports 用として、リリース構築に必要となる ディストリビューションファイルが存在するディレクトリです。 これにより、低速なリンク経由で distfiles をダウンロードする際に費やされる莫大な時間を 節約することができます。 .It Va RELEASENOUPDATE .Dq Li "make rerelease" の際にこの変数の値を設定した場合、 .Dq Li "cvs update" によるソースコード更新を行ないません。 .El .Sh 関連ファイル .Bl -tag -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .It Pa /usr/src/release/Makefile .It Pa /usr/src/release/${arch}/drivers.conf .It Pa /usr/src/release/${arch}/boot_crunch.conf .It Pa /usr/src/release/${arch}/fixit_crunch.conf .El .Sh 使用例 以下のコマンド列は .Fx 4.5 release を構築する際に使用したものです。 .Bd -literal -offset indent cd /usr cvs co -rRELENG_4_5_0_RELEASE src cd src make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=4.5-RELEASE \\ CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_5_0_RELEASE .Ed .Pp これらのコマンドを実行すると、FTP ディストリビューション用と、 CD-ROM ディストリビューション用として使える完全なシステムが ディレクトリ .Pa /local3/release/R にできます。 .Pp 次のコマンド列は、ローカルで修正したソースツリーの .Dq "-CURRENT スナップショット" を構築するために使用できます。 .Bd -literal -offset indent cd /usr/src cvs diff -u > /path/to/local.patch make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \\ CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch .Ed .Sh 関連項目 .Xr cc 1 , .Xr crunchgen 1 , .Xr cvs 1 , .Xr install 1 , .Xr make 1 , .Xr patch 1 , .Xr uname 1 , .Xr vn 4 , .Xr drivers.conf 5 , .Xr make.conf 5 , .Xr build 7 , .Xr ports 7 , .Xr chroot 8 , .Xr mtree 8 .Rs .%T "FreeBSD Release Engineering" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ .Re .Rs .%T "FreeBSD Release Engineering of Third Party Packages" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ .Re .Rs .%T "FreeBSD Developers' Handbook" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ .Re .Sh 歴史 .Fx 1.x では、チェックリストを手でチェックしながら、 .An Rod Grimes によりコンパイルされ、リリースが作成されました。 不完全さはさておくにしても、このチェックリストには、 ファイルシステムを使えるようにするためのこまごまとした要求が大量に 含まれており、その実行は拷問としかいいようがないものでした。 .Pp .Fx 2.0 リリースエンジニアリングを続ける中で、 .Pa src/release/Makefile を直して、隔離された無菌環境でリリースを構築する際の退屈な作業の ほとんどを自動的に行なえるようにすることに、顕著な努力が払われました。 .Pp 複数のブランチにまたがる 1000 回近くの改版を経て、 .Pa src/release/Makefile の .Xr cvs 1 ログには、リリースエンジニアたちが経験した苦難のいくばくかを示す 生々しい歴史の記録が刻み込まれています。 .Sh 作者 .Pa src/release/Makefile は、もともとは .An -nosplit .An Rod Grimes , .An Jordan Hubbard , .An Poul-Henning Kamp が書きました。 このマニュアルページは、 .An Murray Stokely Aq murray@FreeBSD.org が書きました。 diff --git a/ja_JP.eucJP/man/man8/MAKEDEV.8 b/ja_JP.eucJP/man/man8/MAKEDEV.8 index 4ffdbeeb48..e0c82aa51b 100644 --- a/ja_JP.eucJP/man/man8/MAKEDEV.8 +++ b/ja_JP.eucJP/man/man8/MAKEDEV.8 @@ -1,116 +1,120 @@ .\" Copyright (c) 1991, 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. .\" .\" @(#)MAKEDEV.8 8.1 (Berkeley) 6/5/93 -.\" %FreeBSD: src/share/man/man8/man8.i386/MAKEDEV.8,v 1.15.2.4 2002/01/10 08:24:07 ru Exp % +.\" %FreeBSD: src/share/man/man8/man8.i386/MAKEDEV.8,v 1.15.2.5 2002/05/11 06:15:16 dd Exp % .\" .\" $FreeBSD$ .Dd June 5, 1993 .Dt MAKEDEV 8 i386 .Os .Sh 名称 .Nm MAKEDEV .Nd システムとデバイス特殊ファイルの作成 .Sh 書式 .Nm name ... .Sh 解説 このシェルスクリプト .Nm は、 .Pa /dev ディレクトリにあり、通常の特殊ファイルを作成するのに 使われます。 特殊ファイルに関するより徹底した議論が必要ならば、 .Xr intro 4 をご覧ください。 .Pp .Nm は、何個かのデバイス名を引数に取ります。 ここでのデバイス名は、デバイスに対する、よくある省略形です。 .Dq std と .Dq local という、二つの特殊デバイスがあります。 前者はそのアーキテクチャの標準デバイスを作成します。 後者はローカルサイトの固有のデバイスの為のもので、 シェルファイル .Dq MAKEDEV.local を実行します。 .Pp i386 アーキテクチャでは次のデバイスをサポートします。 ここで、ハッシュ記号 .Pq Dq # を伴ったデバイス名は、 ハッシュ記号をユニット番号で置き換えます。 .Bl -tag -width indent .It std 標準デバイス (console, fd/*, klog, kmem, mem, null, stderr, stdin, stdout, tty) です。 .It local コンフィギュレーション固有のデバイスです。 .It tty# 標準 PC COM ポートです。 .It fd# .Dq フロッピ ディスクドライブ (3 1/2, 5 1/4) です。 .It pty# 32 対の仮想端末マスタとスレーブです。 .It da# SCSI ディスクドライブです。 .It sa# SCSI テープドライブです。 .It ch# SCSI チェンジャデバイスです。 .It ses# SCSI SES/SAF-TE 環境デバイスです。 .It vty# syscons/pcvt/codrv のための 12 の仮想コンソールの組です。 +.It wd# +(pc98 のみ) +.Dq ウィンチェスタ +ディスクドライブ (ST506, IDE, ESDI, RLL など) です。 .It ad# .Dq ATAPI ディスクドライブ (IDE) です。 .It ast# .Dq ATAPI テープドライブです。 .It acd# .Dq ATAPI CDROM ドライブです。 .El .Sh 関連ファイル .Bl -tag -width /dev/xxxx -compact .It Pa /dev 特殊ファイルのディレクトリ .El .Sh 関連項目 -.Xr intro 4 , .Xr ata 4 , +.Xr intro 4 , .Xr config 8 , .Xr mknod 8 diff --git a/ja_JP.eucJP/man/man8/jail.8 b/ja_JP.eucJP/man/man8/jail.8 index a192e60452..6b4a4f4da8 100644 --- a/ja_JP.eucJP/man/man8/jail.8 +++ b/ja_JP.eucJP/man/man8/jail.8 @@ -1,407 +1,421 @@ .\" .\" Copyright (c) 2000 Robert N. M. Watson .\" 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. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. .\" .\" .\" ---------------------------------------------------------------------------- .\" "THE BEER-WARE LICENSE" (Revision 42): .\" wrote this file. As long as you retain this notice you .\" can do whatever you want with this stuff. If we meet some day, and you think .\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp .\" ---------------------------------------------------------------------------- .\" -.\" %FreeBSD: src/usr.sbin/jail/jail.8,v 1.13.2.12 2001/12/14 16:48:10 ru Exp % +.\" %FreeBSD: src/usr.sbin/jail/jail.8,v 1.13.2.13 2002/05/11 01:39:40 jedgar Exp % .\" .\" $FreeBSD$ .Dd December 12, 2001 .Dt JAIL 8 .Os .Sh 名称 .Nm jail .Nd プロセスとその子孫を閉じ込める .Sh 書式 .Nm jail .Ar path hostname ip-number command ... .Sh 解説 .Nm コマンドはプロセスとその将来の子孫を閉じ込めます。 .Pp 詳細は .Xr jail 2 のマニュアルページを参照してください。 .Sh 使用例 .Ss jail 用ディレクトリツリー設定 -この例は jail 用ディレクトリツリーをどのように構築するかを示しています: +この例は、 +.Fx +配布物全体を含む jail 用ディレクトリツリーをどのように構築するかを示しています: .Bd -literal D=/here/is/the/jail cd /usr/src +mkdir -p $D make world DESTDIR=$D cd etc -make distribution DESTDIR=$D -DNO_MAKEDEV +make distribution DESTDIR=$D -DNO_MAKEDEV_RUN cd $D/dev sh MAKEDEV jail cd $D ln -sf dev/null kernel .Ed +.Pp +多くの場合、この例の方法では、 +必要をはるかに越えた数のものを jail に入れてしまうでしょう。 +もう一方の極端な例では、jail はただ 1 個のファイルのみを保持します: +すなわち jail の中で実行する実行形式 1 個だけです。 +.Pp +.Dq 太い +jail から開始して動かなくなるまで徐々にものを削除していく方が、 +.Dq 細い +jail から開始して動くようになるまで徐々にものを追加していくよりも +かなり簡単ですので、試すにはお勧めですが、また用心することもお勧めします。 .Ss jail の設定 jail 用ディレクトリツリーの構築のためには、 .Sx jail 用ディレクトリツリー設定 に記述されている手順を実行してください。 この例では、jail された IP アドレス用に .Pa /data/jail/192.168.11.100 に構築するものと仮定します。 以降、 あなたが必要とするディレクトリ、IP アドレス、ホスト名で置き換えてください。 .Pp まず、実システムの環境を .Dq jail に適した環境 にします。 一貫性のために、親となる実マシンを .Dq ホスト環境 と呼び、jail される仮想マシンを .Dq jail 環境 と呼びます。 jail は IP エイリアスを使用して実装されていますので、 最初にすべきことのひとつは、 ホストシステムの IP サービスで、 全ローカル IP アドレスに対してサービスを listen しているものを、 無効化することです。 これは、 .Xr inetd 8 を修正して、適切な IP アドレスのみ listen させるといった ことを意味します。 次の設定を、ホスト環境の .Pa /etc/rc.conf に追加します: .Bd -literal -offset indent sendmail_enable="NO" inetd_flags="-wW -a 192.168.11.23" portmap_enable="NO" .Ed .Pp この例では、 .Li 192.169.11.23 はホストシステムの元々の IP アドレスです。 .Xr inetd 8 から実行されるデーモンは、指定されたホスト IP アドレスを使用するよう、 簡単に設定可能です。 他のデーモンは手動での設定が必要です \(em いくつかに対しては、 .Xr rc.conf 5 フラグエントリにて可能ですが、他のものに対してはアプリケーション毎の 設定ファイルをいじるか、再コンパイルが必要です。 実行に使用する IP アドレスを指定不可能なアプリケーションに対しては、 可能であればこれらを無効にする方が良いです。 .Pp ベースシステムに付属する多くのデーモンは、 jail 中枢環境内で jail から実行されると、問題を持ち得ます。 これには .Xr sendmail 8 , .Xr named 8 , .Xr portmap 8 が含まれます。 .Xr sendmail 8 と .Xr named 8 は、自身の設定ファイルを使用して、 特定の IP のみ listen するよう設定可能ですが、 ほとんどの場合、 デーモンを単に jail 内でのみ実行して、ホスト環境では実行しない方が簡単です。 ホスト環境からの NFS にサービスしようとすると、 混乱が生じるかもしれませんし、 特定の IP だけを使用するようには簡単には再設定できません。 これは、NFS のサービスには、直接カーネルが実行するものがあるからです。 ホスト環境内で動作している すべてのサードパーティネットワークソフトウェアもまた確認および設定して、 すべての IP アドレスに bind しないようにすべきです。 結果として、これらのサービスもまた、 jail 環境から提供されているように見えるでしょう。 .Pp ひとたびこれらのデーモンが無効化またはホスト環境内に固定化されたなら、 後の混乱 (jail へメールを送るときに、jail の sendmail がダウンしていて、 メールがホストへ配送されてしまうなど) の可能性を減らすために、 リブートして全デーモンが既知の状態となるようにするのが最良です。 .Pp 最初に jail を起動するときには、 ネットワークインタフェースを設定しないでください。 これは、ネットワークインタフェースを少し整理したり、 アカウントを設定するためです。 どんなマシンでも (仮想であってもそうでなくても)、 root のパスワードやタイムゾーンといった情報を設定する必要があるでしょう。 始める前に、 .Xr sysinstall 8 を jail のツリーにコピーすることにより、簡単に設定できます。 次のように行います: .Bd -literal -offset indent mkdir /data/jail/192.168.11.100/stand cp /stand/sysinstall /data/jail/192.168.11.100/stand .Ed .Pp それから、jail を開始します: .Pp .Dl "jail /data/jail/192.168.11.100 testhostname 192.168.11.100 /bin/sh" .Pp 最後に、エラー無しで、jail 内の、シェルプロンプトで終るでしょう。 ここで、 .Pa /stand/sysinstall を実行し、インストール後の設定で様々な設定オプションを設定できます。 また、同様のことを実現するために、 .Pa /etc/rc.conf 等を手動で編集できます。 .Pp .Bl -bullet -offset indent -compact .It 空の .Pa /etc/fstab を作成し、fstab が存在しないという起動警告を解消します。 .It ポートマッパを無効化します .Pa ( /etc/rc.conf : .Li portmap_enable="NO" ) 。 .It .Xr newaliases 1 を実行し、 .Xr sendmail 8 の警告を解消します。 .It インタフェース設定を無効化し、ifconfig 関連の起動警告を解消します .Pq Li network_interfaces="" 。 .It .Pa /etc/resolv.conf を設定し、jail 内の名前解決が正しく動作するようにします。 .It root のパスワードを設定します。 実ホストシステムとは異なっても良いです。 .It タイムゾーンを設定します。 .It jail 環境内のユーザにユーザアカウントを追加します。 .It jail 環境に必要なパッケージを追加します。 .El .Pp パッケージ固有の設定 (ウェブサーバや SSH サーバ等) や、 好みのログを取るための .Pa /etc/syslog.conf の修正等を行ってください。 .Pp シェルから抜ければ、jail はシャットダウンします。 .Ss jail の開始 jail を再開し、 全デーモンと他のプログラムと共に環境を立ち上げる準備ができました。 これを実行するには、まず仮想ホストのインタフェースを立ち上げ、 それから jail の .Pa /etc/rc スクリプトを jail 内から実行します。 .Pp 注: 信頼できないユーザに jail 内で root アクセスを許す予定なら、 .Va jail.set_hostname_allowed を 0 に設定することを検討すると良いでしょう。 管理上の理由を参照して、何故これが良い考えなのかを見てください。 この変数を設定することにしたならば、 すべての jail の起動前にこれを設定することが必要であり、 またブートの度に 1 度必要です。 .Bd -literal -offset indent ifconfig ed0 inet alias 192.168.11.100/32 mount -t procfs proc /data/jail/192.168.11.100/proc jail /data/jail/192.168.11.100 testhostname 192.168.11.100 \\ /bin/sh /etc/rc .Ed .Pp ほとんどの .Xr sysctl 8 設定変数は jail 内から設定不可であるため、若干の警告が表示されます。 なぜなら、 これらの設定変数は、すべての jail 環境とホスト環境に渡って大域的だからです。 しかしながら、すべて正しく動作することでしょう。 .Xr inetd 8 , .Xr syslogd 8 および他のプロセスが jail 内で動作していることは、 .Xr ps 1 を使用することにより、jail されたプロセスの横に .Ql J フラグが付いていることにより確認可能です。 jail された環境へは、ホスト名または IP アドレスで .Xr telnet 1 可能であり、 前述の手順で作成したアカウントを使用してログイン可能です。 .Ss jail の管理 通常のマシンのシャットダウンコマンド、例えば .Xr halt 8 , .Xr reboot 8 , .Xr shutdown 8 は jail 内ではうまく使えません。 jail 内の全プロセスを殺すためには、jail に root でログインし、 やりたいことに依存して次のいずれかのコマンドを使用します: .Pp .Bd -literal -offset indent kill -TERM -1 kill -KILL -1 .Ed .Pp これにより、 .Dv SIGTERM または .Dv SIGKILL のシグナルを、jail 内から jail 内の全プロセスに通知します。 jail の用途に依存して、jail 内で .Pa /etc/rc.shutdown を実行したいかもしれません。 現在のところ、jail 内に新規プロセスを挿入する手段はありませんので、 これらの動作を行う前にまず jail へログインする必要があります。 .Pp jail 外からプロセスを殺すためには、 殺すプロセスの個々の PID を判別することが必要です。 .Pa /proc/ Ns Ar pid Ns Pa /status ファイルの最後のフィールドには、 プロセスが動作している jail のホスト名か、 このプロセスが jail 内で動作していないことを示すために .Dq Li - を含みます。 .Xr ps 1 コマンドもまた、jail 内のプロセスに対して .Ql J フラグを示します。 しかし、jail 用のホスト名はデフォルトでは jail 内から書き換え可能であるため、 デフォルトでは .Pa /proc の status エントリは信頼できません。 jail 内からのホスト名設定を禁ずるには、ホスト環境の sysctl 変数 .Va jail.set_hostname_allowed を 0 に設定します。 これはすべての jail に影響します。 .Xr sysctl.conf 5 を使うことにより、ブートのたびにこの sysctl 設定を行えます。 次の行を .Pa /etc/sysctl.conf に追加するだけです: .Pp .Dl jail.set_hostname_allowed=0 .Pp 将来のバージョンの .Fx では、jail を管理するための機構は、 より良くなっているでしょう。 .Ss Sysctl MIB エントリ jail 封鎖環境の特定の側面は、ホスト環境から、 .Xr sysctl 8 MIB 変数を使用して変更可能です。 現在のところ、これらの変数はシステム上のすべての jail 環境に影響しますが、 将来的にこの機能はより細粒度となる予定です。 .Bl -tag -width XXX .It Va jail.set_hostname_allowed 本 MIB エントリは、jail 内のプロセスが .Xr hostname 1 または .Xr sethostname 3 を使用して、ホスト名を変更可能か否かを指定します。 現在の jail 実装では、 jail 内からホスト名を設定できてしまうと、 .Pa /proc 内の jail 情報が正確であることに依存している管理ツールへ影響します。 このため、 信頼できない団体に jail への特権アクセスを許している環境においては、 本機能は無効化するべきです。 .It Va jail.socket_unixiproute_only jail 機能は、単一の IPv4 アドレスを各 jail へ bind し、 IPv4 空間における他のネットワークアドレスへのアクセスを制限します。 これらは、ホスト環境ではアクセス可能であるかもしれません。 しかしながら jail は現在のところ、 jail 機能を持たない他のネットワークプロトコルスタックへの アクセスを制限できません。 このためデフォルトでは、jail 内のプロセスは .Dv PF_LOCAL , .Dv PF_INET , .Dv PF_ROUTE ドメインのプロトコルにのみアクセス可能ですので、 .Ux ドメインソケット、IPv4 アドレス、ルーティングソケットにアクセス可能です。 他のドメインへアクセスを有効にするには、 本 MIB エントリを 0 に設定します。 .It Va jail.sysvipc_allowed 本 MIB エントリは、jail 内のプロセスが System V IPC プリミティブへの アクセスを持つか否かを指定します。 現在の jail 実装では、System V プリミティブは、 ホスト環境と jail 環境に跨がる単一の名前空間を共有します。 これは、jail 内のプロセスが jail 外のプロセスや他の jail 内のプロセスと 通信可能である (また潜在的に妨害も可能である) ことを意味します。 このため、この機能はデフォルトで無効ですが、 本 MIB エントリを 1 に設定することで有効にできます。 .El .Sh 関連項目 .Xr chroot 2 , .Xr jail 2 , .Xr procfs 5 , .Xr rc.conf 5 , .Xr sysctl.conf 5 , .Xr halt 8 , .Xr inetd 8 , .Xr named 8 , .Xr portmap 8 , .Xr reboot 8 , .Xr sendmail 8 , .Xr shutdown 8 , .Xr sysctl 8 , .Xr syslogd 8 .Sh 歴史 .Nm コマンドは .Fx 4.0 ではじめて登場しました。 .Sh 作者 .An -nosplit jail の機能は .An Poul-Henning Kamp によって R&D Associates .Pa http://www.rndassociates.com/ のために書かれ、 .Fx に寄贈されました。 .Pp .An Robert Watson が追加の文書を書き、少々バグを見つけ、 新規機能を少々追加し、ユーザランドの jail 環境を綺麗にしました。 .Sh バグ jail は現在のところ、強力な管理機構を持ちません。 これには例えば、jail 内の全プロセスにシグナルを送る、 .Xr procfs 5 に対して特定の jail 情報を .Xr ps 1 経由でアクセスできるようにすることが含まれます。 また、アドレスエイリアスフラグを追加して、 全 IP .Pq Dv INADDR_ANY 上で listen するようなデーモンが このフラグを持つアドレスには bind しないようにすると良いかもしれません。 これにより、jail 内から提供されるサービスに対して ホストデーモンが負担をかけない、安全なホスト環境を構築可能とします。 現在のところ、 最も単純な答えはホスト上で提供するサービスを最小化することであり、 おそらく簡単に設定可能な .Xr inetd 8 から提供されるものに限定することでしょう。 diff --git a/ja_JP.eucJP/man/man8/mtree.8 b/ja_JP.eucJP/man/man8/mtree.8 index 8c1a25cc82..e6930b4467 100644 --- a/ja_JP.eucJP/man/man8/mtree.8 +++ b/ja_JP.eucJP/man/man8/mtree.8 @@ -1,364 +1,364 @@ .\" 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 -.\" %FreeBSD: src/usr.sbin/mtree/mtree.8,v 1.16.2.9 2001/08/16 15:56:08 ru Exp % -.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/mtree.8,v 1.14 2001/08/18 23:50:45 horikawa Exp $ +.\" %FreeBSD: src/usr.sbin/mtree/mtree.8,v 1.16.2.10 2002/05/10 05:08:57 max Exp % +.\" $FreeBSD$ .\" .Dd February 26, 1999 .Dt MTREE 8 .Os .Sh 名称 .Nm mtree .Nd ディレクトリ階層をマップする .Sh 書式 .Nm .Op Fl LPUcdeinqrux .Bk -words .Op Fl f Ar spec .Ek .Bk -words .Op Fl K Ar keywords .Ek .Bk -words .Op Fl k Ar keywords .Ek .Bk -words .Op Fl p Ar path .Ek .Bk -words .Op Fl s Ar seed .Ek .Bk -words .Op Fl X Ar exclude-list .Ek .Sh 解説 .Nm は、カレントディレクトリをルートとするファイル階層を、 標準入力から読み込んだファイル階層記述と比較します。 .\" ↑原文では単に "specification" となっているが、日本語に訳すと .\" わかりにくいので、「ファイル階層記述」という語をあてている。 .\" 以下も同様。 -- jpman J.Sakai その記述とマッチしない特性をもつファイルや、 実際のファイル階層あるいはファイル階層記述のいずれかから欠落しているファイル に関するメッセージを標準出力に出力します。 .Pp 以下のオプションがあります: .Bl -tag -width flag .It Fl L ファイル階層のすべてのシンボリックリンクをたどります。 .It Fl P ファイル階層のシンボリックリンクをたどりません。 代りに、シンボリックリンク自身を比較対象にします。 これがデフォルトです。 .It Fl U 既存ファイルの所有者、グループおよびパーミッションを ファイル階層記述に合わせて修正し、欠落しているディレクトリを作成します。 欠落ディレクトリを作成するために、ユーザ、グループおよびパーミッションの 全てを指定しなければなりません。 成功するとステータス 0 で終了し、 何らかのエラーが発生すると 1 で終了します。 ミスマッチがあっても、それが訂正されればエラーとはみなされません。 .It Fl c ファイル階層の記述を標準出力に出力します。 .It Fl d ディレクトリ型以外のファイルは全て無視します。 .It Fl e ファイル階層には存在するが、ファイル階層記述に存在しないファイルが あっても警告しません。 .It Fl i .Fl c オプションでファイル階層記述を作成する際、 ディレクトリレベルを一つ下りる毎に空白 4 つ分ずつインデントして出力します。 各ディレクトリ前に出力される /set 文やコメントには影響を与えませんが、 各ディレクトリの最後に出力されるコメントには影響を及ぼします。 .It Fl n ファイル階層記述作成の際、パス名コメントを出力しません。 .Fl c オプション使用時は通常、各ディレクトリの前後にコメントが出力されます。 .It Fl q 静寂モード。 .Dq 存在しない ディレクトリが既に存在するという理由で作成できない場合、文句を言いません。 これは、ディレクトリがシンボリックリンクの場合に発生します。 .It Fl r ファイル階層記述に記載されていないファイル階層に含まれるファイルを 全て削除します。 .It Fl u オプション .Fl U と同様ですが、現ファイル階層がファイル階層記述とマッチしなければ ステータス 2 を返します。 .It Fl x ファイル階層中のマウントポイント以下に降下しません。 .It Fl f Ar file ファイル階層記述を、標準入力からではなく、ファイル .Ar file から読み込みます。 .It Fl K Ar keywords 指定した .Ar keywords (空白あるいはコンマで区切ったもの) を 現在のキーワード集合に追加します。 .It Fl k Ar keywords 現在のキーワード集合の代わりに、 ``type'' キーワードおよび 指定した .Ar keywords (空白あるいはコンマで区切ったもの) を使用します。 .It Fl p Ar path ファイル階層のルートディレクトリを、カレントディレクトリではなく .Ar path とします。 .It Fl s Ar seed キーワード .Cm cksum が指定されている全ファイルに対する単一のチェックサムを 標準エラー出力に出力します。 チェックサムのシードには指定された値が用いられます。 .It Fl X Ar exclude-list 指定されたファイルは .Xr fnmatch 3 パターンを含みます。 これにマッチするファイルはファイル階層記述から除外されます。 1 行に 1 個ずつ記述します。 パターンに .Ql \&/ 文字が含まれる場合、 (開始したディレクトリとの相対で) パス名全体に対してマッチが取られます。 そうでない場合、ベース名に対してのみマッチが取られます。 .Ar exclude-list ファイルにはコメントは許されません。 .El .Pp ファイル階層記述は多くの場合、「キーワード」つまり ファイルに関連した値を指定する文字列から構成されます。 どのキーワードにもデフォルト値はありません。 キーワードに値が設定されていない場合、 そのキーワードに基づいたチェックは行われません。 .Pp 現在サポートされているキーワードは以下の通りです: .Bl -tag -width Cm .It Cm cksum .Xr cksum 1 ユーティリティで規定されるデフォルトアルゴリズムを用いた ファイルのチェックサム。 .It Cm flags シンボル名のファイルフラグ。これらの名前についての情報は .Xr chflags 1 を参照してください。フラグ無しを設定するには、文字列 .Dq none を指定して、現在のデフォルトに優先できます。 .It Cm ignore このファイル以下のファイル階層を無視します。 .It Cm gid 数値で指定したファイルのグループ。 .It Cm gname シンボル名で指定したファイルのグループ。 .It Cm md5digest ファイルの MD5 メッセージダイジェスト。 .It Cm sha1digest .Tn FIPS ファイルの 160-1 .Pq Dq Tn SHA-1 メッセージダイジェスト。 .It Cm ripemd160digest ファイルの .Tn RIPEMD160 メッセージダイジェスト。 .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 ファイルタイプ。以下のいずれかを指定します: .Pp .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 flags , .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 Pa ..\& だけが含まれる行は、カレントディレクトリパスを 1 レベル上に上げることを 意味します。 .Pp 空行および最初の非空白文字がハッシュ記号 (``#'') であるような行は無視されます。 .Pp .Nm は成功するとステータス 0 で終了し、何らかのエラーが生じると 1 で終了します。 また、ファイル階層がファイル階層記述とマッチしない場合はステータス 2 で 終了します。 ただしオプション .Fl U が指定されている場合は、ステータス 2 はステータス 0 に変換されます。 .Sh 使用例 「トロイの木馬」に感染したシステムバイナリを検出するには、 以下のように操作することを推奨します。 ファイルシステムに対して .Nm .Fl K .Cm sha1digest を実行し、その結果のコピーを別マシンか、少なくとも暗号化した形式で ストアします。 出力ファイル自身は .Xr md5 1 ユーティリティを用いてダイジェストを作成します。 そして定期的に .Nm と .Xr md5 1 をオンラインのファイル階層記述に対して走らせます。 クラッカーが手を加えたバイナリに合わせて オンラインのファイル階層記述を変更することは 可能ですが、オリジナルと同じ MD5 ダイジェストをもつ記述を作成するのは 非現実的だと考えらていれます。 .Pp .Fl d オプションおよび .Fl u オプションを組み合わせると、ソフトウェア配布やそれに類する処理のために ディレクトリ階層を作成するのに用いることができます。 .Pa /etc/mtree に置かれたファイル群は、この .Fx 配布のほとんど全てのディレクトリを作成するのに用いられました。 .Sh 関連ファイル .Bl -tag -width /etc/mtree -compact .It Pa /etc/mtree システムのファイル階層記述ディレクトリ .El .Sh 診断 .Ex -std .Sh 関連項目 .Xr chflags 1 , .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 で登場しました。 .Tn MD5 ダイジェスト機能は、 .Xr cksum 1 をだますプログラムが広範囲に悪用されたのに対抗して .Fx 2.1 で追加されました。 新たな攻撃により .Tn MD5 の弱さが示されたため、 .Tn SHA-1 と .Tn RIPEMD160 のダイジェスト機能が .Fx 4.0 で追加されました。 ファイルフラグのサポートは .Fx 4.0 で追加されました。このほとんどは .Nx 由来です。