名前

vfs_zfsacl — ZFS ACL samba モジュール

書式

vfs objects = zfsacl

説明

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

zfsacl VFS モジュールは、Samba と ZFS を適切に統合させるために、Samba にとって必要となる ACL 拡張属性 のすべてを取り扱うモジュールである。

現在 zfsacl vfs モジュールは以下の処理状況において拡張属性を提供する。

  • ZFS に対しての設定変更が可能なオプションを用いた NFSv4 ACL インターフェース

注意: このモジュールは posix acl の動作に 従うので、chown を通じてのパーミッション取得を可能にする。 Samba は後の処理タイミングにおいて、このモジュールの chown 処理を 許可しない場合がある。こういった制約を扱う責任は、Samba 側にある のではなく、Samba が扱っているファイルシステム側にあるからである。

このモジュールは、 acl map full control = acl map full control smb.conf パラメーターを使用する。yes(既定値)に設定すると、 ファイルに対する ACE エントリとして戻ってくる値に FILE_DELETE_CHILD ビットを加える。これはファイルに対するものであってディレクトリではない。 なおその戻り値は、FILE_DELETE、 FILE_DELETE_CHILD を除き、すでにファイル に関するパーミッションはすべて含まれている。これは、Windows アプリケーション が NFSv4 互換 ACL に対応するファイルシステムを使っていて、GENERIC_ALL アクセスを要求するものである場合に、ACCESS_DENIED エラーが返ってしまうこと を防ぐ。

このモジュールはスタック可能である。

Samba 4.0 からすべてのオプションは共有単位のオプションとなった。

オプション

nfs4:mode = [ simple | special ]

ZFS 上の特別な ID(OWNER@ と GROUP@)の置き換えを制御する。 mode を simple とすることを推奨する。このモードでは、 ファイル所有者とグループに対する非継承 ACL エントリのみ 特別な ID にマップされる。

以下のモードはモジュールによって解釈される:

  • simple(既定値) - OWNER@ と GROUP@ という特別な ID を、非継承 ACE のみに使う。

  • special(非推奨) - OWNER@ と GROUP@ という特別な ID を、すべてのファイル所有者とグループ ACE に対して使う。

nfs4:acedup = [dontcare|reject|ignore|merge]

このパラメーターは、ZFS の ACL 中にある重複した ACE を、どのように Samba が扱うかを設定する。 ZFS は同じ ID に対して異なったビットに対し、重複した ACE を許可/作成できる。

以下はそれぞれの値における Samba の動作である。

  • dontcare(既定値) - 指定された ACE をそのまま設定する

  • reject (deprecated) - ACL 設定処理を中断しエラーを返す

  • ignore (deprecated) - 重複するする ACE の二番目以降を無視する

  • merge - 重複する ACE のフラグとマスクをそれぞれ OR ビット演算して 1 つの ACE にする

nfs4:chown = [yes|no]

このパラメーターはファイルシステムに依存してサポートされる所有者変更(chown)機能を 有効にするか否かを指定する。このパラメーターは、システムに脆弱性が 出来てしまうかもしれないので、注意深く有効にすべきである。

いくつかのファイルシステムでは、所有者の変更権限として、 a) 所有権の付与権限 b) 所有権の取得権限の 2 種類を実装しており、 このうち後者はリスクであると考えられる。

以下は、それぞれの値における Samba の動作である。

  • yes - ファイルシステム下でサポートされているなら chown を有効にする

  • no(既定値) - chown を無効にする

zfsacl:denymissingspecial = [yes|no]

Prevent users from setting an ACL that lacks NFSv4 special entries NFSv4 の特別なエントリ(owner@, group@, everyone@)がない ACL をユーザが設定できない ようにする。 ZFS は、上位のディレクトリの ACL が 特別なディレクトリを継承していない場合、 新しいファイルに継承された ACL を設定するとき、自動的に前述の3つのエントリを生成する。 このオプションを使うと、ユーザが混乱し、ファイルとディレクトリのパーミッションに 継承された ACL が生成されることにより、予期しない変更が発生することがある。

  • yes

  • no (既定値)

zfsacl:block_special = [yes|no]

ZFS が、NFSv4 の特別なエントリ (owner@, group@, everyone@) を 自動的に追加しないようにする。ZFS は、新しいファイルの継承された ACLを計算するとき、親ディレクトリの ACL に継承された特別なエントリが 欠けている場合、自動的にこの3つのエントリを生成する。これにより、 継承された ACL が生成されるとき、ユーザは混乱した結果を得たり、 ファイルとディレクトリのパーミッションで予期しない変更を受け取る 可能性がある。この動作を抑制するために、何のパーミッションも許可しない everyone@ の継承を設定し、ファイルのセキュリティディスクリプタに エントリを追加しないようにする。

  • yes (既定値)

  • no

zfsacl:map_dacl_protected = [yes|no]

ベースとなるファイルシステムの ZFS ACLが、継承されたアクセスコントロールエントリを 含んでいない時に有効にした場合、SMB クライアントに返される セキュリティディスクリプタに SEC_DESC_DACL_PROTECTED フラグを設定する。 これは、ディレクトリの継承を無効にした Windows クライアントの動作を修正する。

以下は、異なった値に対する Samba の動作である :

  • yes - SEC_DESC_DACL_PROTECTED のマッピングを有効にする。

  • no (既定値)

使用例

ZFS マウントは以下のようにして Samba 経由でエクスポートされる。

        [samba_zfs_share]
	vfs objects = zfsacl
	path = /test/zfs_mount
	nfs4: mode = simple
	nfs4: acedup = merge

バージョン

このマニュアルページはバージョン 4.0.x の Samba システム用である。

著者

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

日本語訳

このドキュメントは、Samba 4.13.2 - 4.13.2 に対応する。

このドキュメントの翻訳は

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

  • さとうふみやす

によって行なわれた。