.\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software donated to Berkeley by .\" Jan-Simon Pendry. .\" .\" 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. .\" 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. .\" .\" @(#)mount_union.8 8.6 (Berkeley) 3/27/94 .\" %FreeBSD: src/sbin/mount_unionfs/mount_unionfs.8,v 1.18.2.1 2005/02/12 15:18:10 brueffer Exp % .\" .\" $FreeBSD$ .\" .Dd March 27, 1994 .Dt MOUNT_UNIONFS 8 .Os .Sh 名称 .Nm mount_unionfs .Nd ユニオンファイルシステムをマウントする .Sh 書式 .Nm .Op Fl br .Op Fl o Ar options .Ar directory .Ar uniondir .Sh 解説 .Nm ユーティリティは .Ar directory を .Ar uniondir の上に接続し、そこから両方のディレクトリツリーの内容が見えるようにします。 デフォルトでは、 .Ar directory が .Em 上の 層に、 .Ar uniondir が .Em 下の 層になります。 .Pp オプションには以下のものがあります: .Bl -tag -width indent .It Fl b デフォルトの上下関係を反転します。 つまり、 .Ar directory が下の層に、 .Ar uniondir が上の層になります。 ただし、マウントポイントは .Ar uniondir のままになります。 .It Fl o .Fl o フラグの後には、オプション文字列をコンマで区切って指定します。 指定可能なオプションと、その意味については .Xr mount 8 を参照してください。 .It Fl r .Xr mount_nullfs 8 でマウントした場合と同様に、下の層を完全に隠すようになります。 .El .Pp ファイルシステムのセキュリティを維持するため、 ファイルシステムをマウントするユーザは、スーパユーザか、 マウントポイントのディレクトリに書き込み許可を持つ者でなければなりません。 さらに、普通のユーザがファイルシステムをマウントするを許可するには、 .Va vfs.usermount .Xr sysctl 8 変数を 1 に設定しなければなりません。 .Pp ファイルの検索は、上の層、下の層の順におこなわれます。 上の層にはエントリのないディレクトリが、下の層で見つかった場合には、上の層に .Em シャドウ ディレクトリが作られます。 このディレクトリはユニオンマウントを実行したユーザの所有になり、モードは .Dq rwxrwxrwx (0777) をその時点で有効な umask で修正したものになります。 .Pp あるファイルが上の層に存在している場合、下の層にある 同じ名前のファイルをアクセスする方法はありません。 どうしても必要なら、ループバックマウントとユニオンマウントを 組み合せることで、別のパス名を使って下の層のファイルを アクセスできるようにしておくことができます。 .Pp オブジェクトへのアクセスは、それがディレクトリである場合を除き、 通常のファイルシステムのアクセス権チェックのあとで実行されます。 ディレクトリの場合には、アクセスをおこなうユーザは上の層と下の層の 両方のディレクトリのアクセス権を持っていなければなりません (両方のディレクトリが存在している必要があります)。 .Pp いくつかの特別な場合を除き、 .Ar uniondir 中のオブジェクトの作成や変更の要求は上の層に渡されます。 下の層に存在するファイルを書き込み用にオープンしようとすると、 そのファイルの .Em 完全な コピーが上の層に作成され、それから上の層のコピーがオープンされます。 同様に、下の層のファイルを切り詰めてサイズを 0 にしようとすると、 空のファイルが上の層に作成されることになります。 これ以外の、本当に下の層の変更が必要となる操作は失敗し、 .Er EROFS が返されます。 .Pp ユニオンファイルシステムは、個々のファイルシステムを扱うというよりも 名前空間を扱うものです。 ユニオンマウントは .Ar uniondir 以下のディレクトリツリーに再帰的に影響します。 このため .Ar uniondir 以下にマウントされたファイルシステムは、すべて ユニオン効果を持つようになります。 これが .Xr mount 8 の .Em union オプションとは異なる点です。 union オプションでは、ユニオン効果はマウントポイントだけに働き、 ファイル名の探索のみに使われます。 .Sh 使用例 コマンド .Bd -literal -offset indent mount -t cd9660 -o ro /dev/cd0a /usr/src mount -t unionfs /var/obj /usr/src .Ed .Pp は、CD-ROM ドライブ .Pa /dev/cd0a を .Pa /usr/src にマウントし、その上に .Pa /var/obj を重ねます。 ほとんどの場合、これはソースツリーが実際には CD-ROM 上に あるにもかかわらず、書き込みが可能になるという効果を目的としています。 .Pp コマンド .Bd -literal -offset indent mount -t unionfs -o -b /sys $HOME/sys .Ed .Pp は、ユーザのホームディレクトリの下の .Pa sys ディレクトリに、システムのソースツリーを下の層として重ね合わせます。 これにより、個々のユーザがそのソースツリーに対して個人的な変更を加えて、 新しいカーネルを構築することができるようになります。 他のユーザはその変更に関知しません。 下の層のファイルは、そのまま .Pa /sys からアクセスできることに注意してください。 .Sh 関連項目 .Xr intro 2 , .Xr mount 2 , .Xr unmount 2 , .Xr fstab 5 , .Xr mount 8 , .Xr mount_nullfs 8 .Sh バグ 本ファイルシステムタイプは、まだ完全にはサポートされていません (注: 機能しないということです) し、 実際のところ使用するとシステム上のデータを破壊するかもしれません。 自己責任において使用してください。 猛犬注意。 濡れていて滑ります。 .Pp 危険性を減らすためには、このコードもまた所有者を必要としています - 真面目なハッカーの方はメールを .Aq hackers@FreeBSD.org に送って引き継ぎの意思を宣言してください。 .Pp 上の層を支えているファイルシステムで、ホワイトアウトが サポートされていないため、下の層のオブジェクトに対して 削除や名前変更の操作をおこなう方法はありません。 このような操作や、下の層を変更する操作、たとえば .Xr chmod 1 のような操作に対しては、 .Er EROFS が返されます。 .Pp ユニオンツリーの上で .Xr find 1 を実行すると、上の層にシャドウディレクトリのツリーが 作成されてしまうという副作用があります。 .Sh 歴史 .Nm ユーティリティは .Bx 4.4 ではじめて登場しました。 最初に動作したのは .Fx -(要記入) です (訳注: 原文 は FreeBSD-(fill this in))。 .\" 本訳注は horikawa@jp.freebsd.org が 19990115 に記載