MOUNT_FUSEFS(8) | FreeBSD System Manager's Manual | MOUNT_FUSEFS(8) |
名称
mount_fusefs — Fuse ファイルシステムデーモンをマウントする書式
mount_fusefs | [ -A][ -S][ -v][ -D fuse_daemon][ -O daemon_opts][ -s special][ -m node][ -h][ -V][ -o option ...] special node [ fuse_daemon ...] |
解説
基本的な使用法は、与えられた special (特殊) ファイルで fuse デーモンを開始することです。実際に、デーモンは、 special (特殊) ファイルを自動的に割り当てられ、次に、それは、 fstat(1) によって識別することができます。その後、その特殊ファイルは、 mount_fusefs によってマウントすることができます。しかしながら、デーモンをスポン (spawn) する手続きは、通常、 mount_fusefs によって実行できるように、自動化されます。与えられた fuse_daemon を呼び出すコマンドが引数のリストに追加されるなら、 mount_fusefs は、そのコマンドを通して fuse_daemon を呼び出します。そのように、 fuse_daemon は、 special (特別) にそれ自体をアタッチするように指示されます。マウントしてから、単純な場合でのようになります。 ( デーモンのマウント を参照。)
special (特殊) 引数は、通常、マウントする特殊ファイルのパスとして扱われます。
しかしながら、 auto が special として渡されるなら、 mount_fusefs は、それ自体によって適切に空いている fuse デバイスを検索します。
最後に、 special (特殊) が整数であるなら、それは、(Fuse ライブラリが mount_fusefs を呼び出したとき、使用される) 既にオープンされた fuse デバイスのファイル記述子の数として解釈されます。 ( デーモンのマウント を参照。)
オプションは、次の通りです:
- -A, --reject-allow_other
- allow_other マウントフラグを禁止します。スクリプトと sudoers(5) ファイルでの使用を目的としています。
- -S, --safe
- セーフモード (すなわち、ファイルシステムデーモンを起動することを拒否します) で実行します。
- -v
- 冗長となります。
- -D, --daemon daemon
- 指定された daemon を呼び出します。
- -O, --daemon_opts opts
- デーモンのコマンド行に opts を追加します。
- -s, --special special
- special (特殊) として special を使用します。
- -m, --mountpath node
- node (ノード) でマウントします。
- -h, --help
- ヘルプを表示します。
- -V, --version
- バージョン情報を表示します。
- -o
-
マウントオプションは、
-o によって指定されます。次のオプションが利用可能です (また、“no”を、それらの前に付けることによってそれらの否定されたバージョンが利用可能です):
- default_permissions
- カーネルでチェックする古い (ファイルモードに基づいた) パーミッションを有効にします。
- allow_other
- STRICT ACCESS POLICY を適用しません。ルート (root) だけがこのオプションを使用することができます。
- max_read= n
- n への読み込み要求のサイズを制限します。
- private
- デーモンの共有されるマウントを拒絶します。これは、明白に -o noprivate を使用する、共有することを許可するためのデフォルト振る舞いです。
- neglect_shares
- 2 番目のマウントがあるなら、アンマウントを拒否しません。
- push_symlinks_in
- マウントポイントがある接頭辞の絶対的なシンボリックリンク。
上記のマウントオプションに加えて、Fuse ライブラリによってサポートされる 1 組の疑似マウントオプションがあります。一つは、Fuse デーモンに -h を渡すことによって、これらをリストすることができます。これらのオプションのほとんどは、デーモン (すなわち、それらの範囲は、ユーザ空間に制限されます) の振る舞いにのみ効果があります。しかしながら、カーネル内サポートを要求するものがあります。現在、カーネルによってサポートされたオプションは、次の通りです:
- direct_io
- バッファキャッシュシステムを回避します。
- kernel_cache
- デフォルトで、与えられたファイルのキャッシュされたバッファは、各 open(2) でフラッシュされます。このオプションは、この振る舞いを無効にします。
デーモンのマウント
通常、ユーザは、Fuse ライブラリが mount_fusefs を呼び出すために Fuse デーモンを有効にするように、直接 mount_fusefs を使用する必要はありません。すなわち、
fuse_daemon device mountpoint
には、次と同じ効果があります。
mount_fusefs auto mountpoint fuse_daemon
これは、基本的な使用法を必要とするとき、(例えば、低い特権レベルでデーモンを実行するが、ルート (root) としてそれをマウントする) 推奨された使用法です。
厳格なアクセスポリシ (STRICT ACCESS POLICY)
Fuse ファイルシステムのための厳格なアクセスポリシによって、ファイルシステムデーモンにユーザと同じ資格証明 (uid、実 uid、gid、実 gid) がある場合のみ、ファイルシステムを使用します。これは、デフォルトで Fuse マウントに適用され、ルートだけが厳格なアクセスポリシなしでマウントすることができます (すなわち、 allow_other マウントオプション)。
これは、それらの I/O 活動でデーモン“spying”からユーザを保護することです。
ユーザは、彼ら自体のの 2 番目のマウント ( 共有されたマウント を参照) を行うことによって (それらに関するがぎり) 厳格なアクセスポリシを積極的に緩和することを選ぶかもしれません。
共有されたマウント
Fuse デーモンを共有することができます (すなわち、何度もマウントされる)。最初の (主要な) マウントを行うとき、デーモンのスポナ (spawner) とマウンタ (mounter) は、同じ uid がなければなりません、または、マウンタは、スーパユーザであるべきです。主要なマウントが整った後に、この機能が private によって無効にされないなら、誰でも 2 番目のマウントを行うことができます。 2 番目のマウントの振る舞いは、次のシンボリックリンクのそれと類似しています: それらは、主要なマウントへのすべてのファイルシステムの操作をリダイレクトします。
2 番目のマウントを行うことは、同意に署名することに似ています: このアクションによって、マウンタは、Fuse デーモンが I/O 動作をトレースすることができることに同意します。その時からずっと、利用者は、 allow_other が使用されても使用されなくても、(使用者自体のマウントまたは主要なマウントによって) ファイルシステムを使用することから禁止されません。
2 番目のマウントのデバイス名は、'#' 文字と 2 番目のマウントのインデックスが後続する対応する主要なマウントのデバイス名です。例えば、 /dev/fuse0#3。
セキュリティ
システム管理者は、カスタムマウントのポリシ (すなわち、 vfs.usermount sysctl を越えるもの) を使用したいと思うかもしれません。そのような目的のための主要なツールは、 sudo(8) です。しかしながら、 mount_fusefs は、任意のプログラムを起動することができるとするなら、これを行うとき、注意深くなければなりません。 mount_fusefs は、ある意味、簡単に行うことができるように設計されています。この目的のために、特定の危険な機能 (すなわち、 -S と -A) を無効にするオプションがあり、コマンドラインの解析は、柔軟な方法で行われます: 混合されたオプションとオプションなしは、許可されますが、それらを処理することは、3 番目のオプションなし引数で停止します (1 番目の後に、2 つは、デバイスとマウントポイントとして利用されました)。コマンドラインの残りは、デーモンとその引数を指定します。 (あるいは、デーモン、スペシャルとマウントパスを、それぞれのオプションを使用して指定することができます。) mount_fusefs は、環境変数 POSIXLY_CORRECT を無視して、常に記述されたように振る舞うことに注意してください。一般的に、可能なものとしてフレンドリなスクリプトにすること / sudoers(5) とするために、情報は、コマンドラインの固定された位置を持っていませんが、いったん、与えられた情報の 1 つが提供されると、続く引数/オプションは、(いくつかの重大でないものを除いて) それを上書きすることができません。
環境変数
- MOUNT_FUSEFS_SAFE
- これは、 -S オプションと同じ効果があります。
- MOUNT_FUSEFS_VERBOSE
- これは、 -v オプションと同じ効果があります。
- MOUNT_FUSEFS_IGNORE_UNKNOWN
- 設定されるなら、 mount_fusefs は、未知のマウントオプションを無視します。
- MOUNT_FUSEFS_CALL_BY_LIB
- FUSE ライブラリの必要に振る舞いを調整します。現在、ヘルプ出力をもたらします。
次の変数は、 mount_fusefs 自体の効果がありませんが、それらは、fuse デーモンの振る舞いに影響します:
- FUSE_DEV_NAME
- アタッチするデバイス。設定されないなら、マルチプレクサ (multiplexer) のパス /dev/fuse が使用されます。
- FUSE_DEV_FD
- 使用されるオープンされた Fuse デバイスのファイル記述子。 FUSE_DEV_NAME を上書きします。
- FUSE_NO_MOUNT
- 設定されるなら、ライブラリは、たとえマウントポイント引数が供給されても、ファイルシステムをマウントすることを試みません。
関連ファイル
- /dev/fuse
- カーネルと Fuse デーモンが通信することができる Fuse デバイス。
- /dev/fuse
- マルチプレクサのパス。それで自動的に行なわれる open(2) は、 (ちょうどこの目的のために作成されるかもしれない) カーネルによって空いている Fuse デバイスに渡されます。
使用例
(そのディレクトリから) Fuse 配布の使用例のファイルシステムをマウントします:
./fusexmp /mnt/fuse
または
mount_fusefs auto /mnt/fuse ./fusexmp
のいずれか。 /dev/fuse0 を使用して、2 つのステップで同じことを行います:
FUSE_DEV_NAME=/dev/fuse ./fusexmp &&
mount_fusefs /dev/fuse /mnt/fuse
mount_fusefs があらゆる外部ユーティリティを呼び出さず、また (race-free でない) 自動デバイス選択を提供することを、保証する fusexmp のためのスクリプトのラッパ (wrapper):
#!/bin/sh -e
FUSE_DEV_NAME=/dev/fuse fusexmp
mount_fusefs -S /dev/fuse /mnt/fuse “$@”
歴史
mount_fusefs は、Fuse のユーザ空間のファイルシステムのフレームワーク (http://fuse.sourceforge.net 参照) の FreeBSD の実装の一部として登場しました。このユーザインタフェースは、FreeBSD 特有です。警告
2 番目のマウントは、それらのデバイス名によってアンマウントされるべきです。それらのファイルシステムのルートのパスによって、それらをアンマウントされる試みが行われるなら、アンマウントの要求は、主要なマウントのパスに転送されます。一般的に、デバイス名によってアンマウントすることは、 (後のものは、通常の状況の下でも動作しますが) マウントのパスによるよりエラーが起こりにくくなります。デーモンが -D と -O オプションによって指定されるなら、 system(3) を通して呼び出され、またデーモンのコマンドラインは、その終了を待つ必要がないように、追加された“&”制御演算子があります。これらのオプションによってデーモンを呼び出すとき、単純なコマンドラインを使用するべきです。
バグ
special は、 auto または /dev/fuse と事実上同じである時かつその時に限り、マルチプレクサ (multiplexer) として扱われます。 /dev/fuse (例えば、 /../dev/fuse) と等価な他のパスは、そうではありません。October 11, 2012 | FreeBSD |