名前

vfs_fruit — OS X と Netatalk との相互運用性を強化する

書式

vfs objects = fruit

説明

この VFS モジュールは samba(7) システムの一部である。

vfs_fruit モジュールは、Apple SMB クライアント との互換性向上と、Netatalk 3 AFP ファイルサーバーとの相互運用性を提供する。

このモジュールは、もしも文字変換をするのであれば、 vfs_catia といっしょに使うべきであり、さらに、 vfs_streams_xattr と共に使わなければならない。 正しい設定方法は、例 の節を参照のこと。

モジュールは、共有に対して、代替データストリーム (ADS) のサポートと、OS X 特有のストリーム "AFP_AfpInfo" と "AFP_Resource" を横取りし、それを特別な方法で扱う機能を有効にする。 その他すべての名前付きストリームは、vfs_fruit といっしょにロードされねばならない vfs_streams_xattr にゆだねられる。

OS X クライアントに対する、ADS サポートが有効な共有 があると言うことは、Apple 固有の SMB サーバ実装の動作と似て、 Samba が大文字と小文字を区別することにより引き起こされる 深刻なパフォーマンスの低下を回避すると言う点において価値がある。

OS X メタデータとリソースフォークストリームは、Netatalk 3 と 互換性のある方法で、下記のように設定することにより格納される。 fruit:resource = filefruit:metadata = netatalk

OS X は、NTFS の不正な文字を、SMB 要求中で、Unicode のプライベート領域にマップする。 fruit:encoding = native を設定することにより、 すべてのマップされた文字は ネイティブな ASCII 文字に変換される。

最後に、共有アクセスモードは、 fruit:locking = netatalk を設定することにより、Netatalk AFP 共有モードに対して チェックすることもできる。

このモジュールは、このマニュアルページで言及されている もの以外に対してはスタックできない。

グローバルオプション

以下のオプションは smb.conf のグローバルセクションに記述しなければ ならず、共有ごとのセクションに設定しても効果がない。

fruit:aapl = yes | no

グローバル オプションで、 コードネーム AAPL という、Apple の SMB2+ 拡張を有効にするかを指定する。 既定値は yes である。 この拡張は、Mac から繋ぐときに、いくつか欠けている点を 機能を追加する:

  • ディレクトリ一覧表示において、 Mac に関連したファイルシステムメタデータ (UNIX モード、 ファインダ情報、リソースフォークと実行パーミッション) が強化されているため、その結果として、Mac クライアントは このメタデータを、個々ののディレクトリエントリごと個別に 取得する必要はなく、その結果、しばしば大幅にパフォーマンス が向上する。

  • ディレクトリエントリの UNIX モード情報を 得たり、変更する機能。

fruit:aapl が有効になっているときに 使える、共有単位のオプションがある。以下で説明する、それらの オプションは、ディレクトリ一覧表示時に、特定の Mac メタデータの処理を無効にする。なお、それらのオプションにおける 既定値は 有効 である:

  • readdir_attr:aapl_rsize = yes | no

  • readdir_attr:aapl_finder_info = yes | no

  • readdir_attr:aapl_max_access = yes | no

以下では、上記のオプションの説明を記載する。

fruit:nfs_aces = yes | no

グローバル オプションであり、NFS ACE 経由の、 ディレクトリエントリに対する UNIX モードの問合せと変更のサポートが有効化か どうかを指定する。既定値は yes である。

fruit:copyfile = yes | no

グローバル オプションであり、 すべての添付されたメタデータとともに、すべてのファイルの コピーを要求する、OS X 固有の copychunk ioctl を有効にするかの 指定。

注意: サーバーがコピー実行中、copyfile 要求は、 クライアントをブロックする。

既定値は no である。

オプション

以下のオプションは、smb.conf のグローバルセクションか、 個々の共有セクションに設定できる。

fruit:resource = [ file | xattr | stream ]

どこに OSX リソースフォークを格納するかを制御する。

重要: Samba バージョン 4.5 以前では、 オプション処理においてスペルミスがあったため、このオプションは fruit:ressource のように s を 2 つ記述する必要がある。

このオプションを、既定値以外に設定する場合、 ひきつづき file の既定値設定を使うので、有効な設定を反映するように、 smb.conf を調整し、fruit:ressource=file を追加する事を推奨する。オプション行をすべて削除しても 同じように動作する。

Samba 4.6 では、正しい/間違ったスペル両方とも 処理できるが、Samba 4.7 以降では 正しいスペルのみ受け付ける。

設定:

  • file (既定値) - OS X と Netatalk 互換の ._ AppleDouble ファイル を使う。

  • xattr - 拡張属性 (xattr) を使用する。これは、大きなサイズの拡張属性をサポート するファイルシステムと、拡張属性に準拠した ファイル IO API が必要となる。つまり、 Solaris と Solaris 派生プラットフォームの ZFS が必須である。

  • stream (実験的) - VFS スタック内において、ストリームを次のモジュールに渡す。 警告: たいていのファイルシステム には拡張属性のサイズ制限があるため、このオプションを streams_xattr モジュールとともに利用しないこと。

fruit:metadata = [ stream | netatalk ]

OS X メタデータストリームが格納される場所を指定する。

  • netatalk (既定値) - Netatalk 互換の xattr を使う

  • stream - VFS スタックの次のモジュールにストリームを渡す

fruit:locking = [ netatalk | none ]

  • none (既定値) - cross protocol locking を使わない

  • netatalk - Netatalk で cross protocol locking を使う

fruit:encoding = [ native | private ]

ファイルシステムに格納される、OS X クライアントで一般的に 使われる、不正な NTFS ASCII 文字セットを制御:

  • private (規定値) - OS Xクライアントによってエンコードされた形で文字を格納: Unicode プライベート領域にマップされる

  • native - そのままのASCII値として文字を格納

fruit:veto_appledouble = yes | no

参考: このオプションは、 fruit:resourcefile (既定値) に設定されている 場合にのみ適用される。

fruit:resourcefile に設定された場合、 vfs_fruit は ._ AppleDouble ファイルを生成する。 このオプションは、クライアントからファイルに対するアクセスを 防ぐために、._ AppleDouble を見えなくする(veto) かを制御する。

._ ファイルをアクセス不可にすると、いくつかのアプリケーションで 誤動作を引き起こすことがある。たとえば、Mac クライアントから Mac ZIP アーカイブのを展開すると、アーカイブ中に ._ ファイルが 含まれているために失敗する。 このオプションを false にすることでこの問題を回避できるが、 内部向けに作成された ._ ファイルが露見してしまうことで 未知の副作用を引き起こすかもしれない。

既定値は yes である。

fruit:posix_rename = yes | no

OS X クライアントで、POSIX の改名動作を有効にするかどうかの指定。 このオプションを指定しないと、クライアントは、(再帰的にも!) 対象ディレクトリ中にオープンしているファイルがある場合、 ディレクトリを改名出来ない。

既定値は yes である。

readdir_attr:aapl_rsize = yes | no

SMB2 FIND の応答で リソースフォークのサイズを返す。

既定値は yes である。

readdir_attr:aapl_finder_info = yes | no

SMB2 FIND の応答で FinderInfo を返す。

既定値は yes である。

readdir_attr:aapl_max_access = yes | no

SMB2 FIND の応答で、ユーザの有効な最大のアクセス許可 を返す。これは計算に時間がかかるので、設定を off にすると、 最大の有効なアクセス許可を持っているとみなす。

既定値は yes である。

        [share]
	vfs objects = catia fruit streams_xattr
	fruit:resource = file
	fruit:metadata = netatalk
	fruit:locking = netatalk
	fruit:encoding = native

著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、Andrew Tridgell によって作成された。現在 Samba は Samba Team に よって、Linuxカーネルの開発と同様のオープンソースプロジェクト として開発が行なわれている。

日本語訳

このマニュアルページは Samba 4.4.11 - 4.4.16 に対応する。

このドキュメントの Samba 4.2.0 - 4.4.16 対応の翻訳は

  • 太田俊哉 (ribbon@samba.gr.jp)

によって行なわれた。