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 エラーが返ってしまうこと を防ぐ。
ZFS には ACL の動作を決める、複数のデータセット設定パラメータがある。 それらのパラメータの意味合いは、このマニュアルページの範囲外ではあるが、 "aclmode" と "aclinherit" は、Samba の共有にとって特に重要である。 Samba の共有としてのみのデータセットでは、"aclmode = restricted" と "aclinherit = passthrough" は、NTFS ACL ともっとも一致した継承の動作を提供する。 "restricted" ACLモードは、重要な ACL があるファイルの chmod() を防ぐ (情報の欠落なしに POSIX モードとして表現できないもの)。 詳細については ZFS のマニュアルページを参照のこと。
このモジュールはスタック可能である。
Samba 4.0 からすべてのオプションは共有単位のオプションとなった。
NFS4 ACL 上の特別な ID (OWNER@ と GROUP@) の置き換えを制御する。 モード simple の使用を推奨する。 このモードでは、ファイル所有者とグループの非継承 ACL エントリ のみが、特別な ID にマップされる。
以下の MODE はモジュールによって解釈される:
simple(default)
- 非継承 ACE 専用の、 OWNER@ と GROUP@ という特別な ID を使用する。
special(deprecated)
- すべてのファイル所有者とグループ ACE 用に、ACE 中で、 OWNER@ と GROUP@ という特別な ID を使用する。
このパラメータは、NFS4 ACL で検出された重複 ACE を、Samba が処理する方法を設定する。 これらは、同じ ID に対して異なるビットを持つ重複した ACE を作成することができるので、Windows クライアントを混乱させる可能性がある。
以下は、異なった値に対する Samba の挙動である :
dontcare
- 送られてきたとおりに ACE をコピーする
reject (deprecated)
- 操作を停止し、ACL 設定操作でエラーが発生した旨を添えて終了する
ignore (deprecated)
- 2番目に一致するACEを含めない
merge (default)
- 2つの重複 ACE の、2つの ace.flag と 2つの ace.mask フィールドの、ビット単位の OR を取り、1つの ACE にする
このパラメータは、基礎となるファイルシステムでサポートされている chown を 有効または無効にすることを許可する。このパラメータは注意して有効にする必要がある。 システムのセキュリティが低下する可能性があるからである。
ファイルシステムによっては a) 所有権を与えること b) 所有権を取得すること (訳注: a) giving b) stealing) として chown を許可しているものもある。 後者はリスクと考えられている。
以下は、異なる値に対する Samba の動作である:
yes
- ファイルシステムでサポートされている場合は、chown を有効にする
no (default)
- chown を無効にする
Prevent users from setting an ACL that lacks NFSv4 special entries NFSv4 の特別なエントリ(owner@, group@, everyone@)がない ACL をユーザが設定できない ようにする。 ZFS は、上位のディレクトリの ACL が 特別なディレクトリを継承していない場合、 新しいファイルに継承された ACL を設定するとき、自動的に前述の3つのエントリを生成する。 このオプションを使うと、ユーザが混乱し、ファイルとディレクトリのパーミッションに 継承された ACL が生成されることにより、予期しない変更が発生することがある。
yes
no (既定値)
ZFS が、NFSv4 の特別なエントリ (owner@, group@, everyone@) を 自動的に追加しないようにする。ZFS は、新しいファイルの継承された ACLを計算するとき、親ディレクトリの ACL に継承された特別なエントリが 欠けている場合、自動的にこの3つのエントリを生成する。これにより、 継承された ACL が生成されるとき、ユーザは混乱した結果を得たり、 ファイルとディレクトリのパーミッションで予期しない変更を受け取る 可能性がある。この動作を抑制するために、何のパーミッションも許可しない everyone@ の継承を設定し、ファイルのセキュリティディスクリプタに エントリを追加しないようにする。
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