Go to main content

Oracle® ZFS Storage Appliance 管理ガイド、Release OS8.8.x

印刷ビューの終了

更新: 2021 年 8 月
 
 

NFS プロトコル

このセクションには、次のトピックが含まれています。

NFS プロトコルの詳細は、次のトピックを使用してください。

サポートされるほかのプロトコルについては、次のセクションを参照してください。

NFS プロトコルのプロパティー

各シェアにはプロトコル固有のプロパティーがあり、そのシェアに対してさまざまなプロトコルの動作を定義します。これらのプロパティーは、シェアごとに定義することも、シェアのプロジェクトから継承することもできます。次の表に、NFS プロトコルのプロパティーと指定可能な値を示します。

表 128  NFS プロトコルのプロパティー
プロパティー
CLI の値
プロパティータイプ
説明
シェアモード
off | rw | ro
継承
シェアが読み取り専用か、読み取り/書き込みに使用できるか、どちらにも使用できないかを決定します。シェアおよびプロジェクトプロトコルを参照してください。
setuid/setgid ファイル作成を無効にする
nosuid
継承
選択すると、クライアントは setuid (S_ISUID) ビットと setgid (S_ISGID) ビットを設定してファイルを作成することも、chmod(2) システム呼び出しによって既存のファイルでこれらのビットを有効にすることもできなくなります。
クライアントがサブディレクトリをマウントできないようにします
nosub
継承
選択すると、クライアントがサブディレクトリを直接マウントすることはできなくなります。シェアのルートをマウントするように強制されます。注記: これは NFSv2 プロトコルと NFSv3 プロトコルのみに適用され、NFSv4.0 または NFSv4.1 には適用されません。
匿名ユーザーマッピング
anon
継承
特定のクライアントで root オプションが有効になっている場合を除き、そのクライアントの root ユーザーは不明なユーザーとして扱われ、そのユーザーがシェアのファイルにアクセスを試みると、すべてこの uid のユーザーによる操作として扱われます。そのあと、このファイルのアクセス権ビットと ACL は通常どおり評価されます。
文字セット
指定可能な値については、「文字セットエンコーディング」を参照してください。
継承
すべてのクライアントのデフォルトの文字セットを設定します。
セキュリティーモード
sec=
指定可能な値のリストについては、「セキュリティーモード」を参照してください。
継承
すべてのクライアントのセキュリティーモードを設定します。
システム認証に対して予約されたポートを強制します
resvport
継承
システム認証のセキュリティーモードとともにシェアまたはプロジェクトで設定されたとき、NFS クライアントは小さい番号の (「予約された」) TCP ポートを使用する必要があります。Oracle Solaris および Linux など一部の NFS クライアントは、デフォルトで番号の小さい TCP ポートを使用します。Windows など、ほかのクライアントでは構成が必要になる可能性があります。

NFS シェアモードの例外

グローバルなシェアモードに対する例外は、クライアント固有のシェアモードまたは例外を設定することによって、クライアントごと、またはクライアントの集まりごとに定義できます。特定のクライアントへのアクセスを制限するために、グローバルなシェアモードをnone に設定して、アクセスを付与するグループを徐々に小さくしていくことをお勧めします。たとえば、グローバルなシェアモードが none に設定されたシェアを作成できます。これは、すべてのクライアントへのアクセスを拒否したあとで、クライアントのサブセットに読み取り専用アクセスを付与します。さらに、クライアントのより小さいサブセットに読み取り/書き込みアクセスを付与して、最後に信頼できるホストのみが読み取り/書き込みアクセスと root 対応のアクセスを持つようにできます。

クライアント固有のシェアモードはグローバルなシェアモードよりも優先されます。クライアントには、例外で指定されるクライアント固有のシェアモードに応じたアクセス権が付与されます。例外が存在しない場合、グローバルなシェアモードに応じたアクセス権がクライアントに付与されます。

表 129  クライアントタイプ
タイプ
CLI の接頭辞
説明
ホスト (FQDN) またはネットグループ
none
指定された完全修飾名に解決される IP アドレスを持つ単一のクライアント、または、クライアントの IP アドレスを解決した完全修飾名を含んでいるネットグループ。
hostname.sf.example.com
DNS ドメイン
.
この接尾辞で終わる完全修飾名に解決される IP アドレスを持つすべてのクライアント。
sf.example.com
IPv4 サブネット
@
CIDR 表記で表現される、指定された IPv4 サブネットに含まれる IP アドレスを持つすべてのクライアント
192.0.2.254/22
IPv6 サブネット
@
CIDR 表記で表現される、指定された IPv6 サブネットに含まれる IP アドレスを持つすべてのクライアント
2001:db8:410:d43::/64

クライアントごとまたはクライアントの集まりごとに、クライアントがシェアに対して読み取り専用アクセス権を持つか、または読み取り/書き込みアクセス権を持つかを指定します。NFS 例外を設定する場合、クライアントが root ユーザー権限を持つか、または root アクセス権を持たないユーザーとして扱われるかについても指定します。

ネットグループの管理

ネットグループは、NFS エクスポートのアクセスを制御するために使用できます。ただし、ネットグループの管理は複雑になることがあります。代わりに IP サブネット規則または DNS ドメイン規則を使用することを検討してください。

ネットグループを使用する場合、有効になっているサービスに応じて、ネットグループが NIS または LDAP から解決されます。LDAP を使用する場合、それぞれのネットグループがデフォルトの場所 ou=Netgroup,(Base DN) に存在し、標準スキーマを使用している必要があります。

通常、ネットグループエントリのユーザー名コンポーネントは NFS に影響を与えず、ホスト名だけが意味を持ちます。ネットグループに含まれるホスト名は正規名であること、また、DNS で解決される場合は完全修飾名であることが必要です。つまり、NFS サブシステムは、要求しているクライアントの IP アドレスを解決すると、指定された FQDN、または指定されたネットグループのいずれかのメンバーに一致する正規ホスト名になることを検証しようとします。ドメインのコンポーネントも含めて正確に一致する必要があります。それ以外の場合、その例外には一致せず、次の例外が調べられます。ホスト名の解決の詳細は、DNS を参照してください。

2013.1.0 ソフトウェアリリースでは、UNIX クライアントユーザーはパフォーマンスを低下させることなく、最大 1024 グループに所属することが可能です。それ以前のリリースでは、UNIX クライアントユーザーにつき最大 16 グループをサポートしていました。

NFS シェアモードおよび例外オプション

CLI では、すべての NFS シェアモードと例外を、sharenfs プロパティーの 1 つのオプション文字列で指定します。この文字列は、値をコンマで区切ったリストです。これは、BUI に関して説明したグローバルなシェアモードに相当する、rorwon、または off のいずれかで始める必要があります。

表 130  NFS シェアモード値 (BUI および CLI)
BUI シェアモード値
CLI シェアモード値
説明
なし
off
シェアモードは無効化されています。
sharenfs=off
on
シェア名はデータセット名で、rw または ro の NFS 例外が定義されている場合にかぎりシェア名を読み取り/書き込みまたは読み取り専用に利用できます。ほかのすべてのクライアントについてはシェアモードが無効です。
sharenfs="on,ro=sf.example.com"
resource_name
シェア名はリソースセット名で、rw または ro の NFS 例外が定義されている場合にかぎりシェア名を読み取り/書き込みまたは読み取り専用に利用できます。ほかのすべてのクライアントについてはシェアモードが無効です。
sharenfs="myshare,ro=sf.example.com"
読み取り/書き込み
on
シェア名はデータセット名で、NFS 例外がない場合はシェア名をすべてのクライアント用の読み取り/書き込みに利用できます。
sharenfs=on
rw
シェア名はデータセット名で、ro 例外が定義されているクライアントを除くすべてのクライアント用の読み取り/書き込みに利用できます。
sharenfs=rw または sharenfs="rw,ro=sf.example.com"
resource_name
シェア名はリソース名で、NFS 例外がない場合はシェア名をすべてのクライアント用の読み取り/書き込みに利用できます。
sharenfs=myshare
resource_name,rw
シェア名はリソース名で、ro 例外が定義されているクライアントを除くすべてのクライアント用の読み取り/書き込みに利用できます。NFS 例外は定義される場合もされない場合もあります。
sharenfs="myshare,rw" または sharenfs="myshare,rw,ro=sf.example.com"
読み取り専用
ro
シェア名はデータセット名で、rw 例外が定義されているホストを除くすべてのホスト用の読み取り専用に利用できます。
sharenfs="ro,rw=sf.example.com"
resource_name,ro
シェア名はリソース名で、rw 例外が定義されているクライアントを除くすべてのクライアント用の読み取り専用に利用できます。NFS 例外は定義される場合もされない場合もあります。
sharenfs="myshare,ro" または sharenfs="myshare,ro,rw=sf.example.com"

次の例では、すべてのクライアントのシェアモードが読み取り専用に設定されます。すべてのクライアントで、root ユーザーは一般的な nobody ユーザーとしてシェアのファイルにアクセスします。

set sharenfs=ro

nosuid オプションまたは anon オプション、あるいはその両方を追加することもできます。したがって、不明なユーザーをすべて uid 153762 にマッピングするように定義するには、次のように指定します。

set sharenfs="ro,anon=153762"

注 -  = 文字を含む CLI プロパティー値は引用符で囲む必要があります。

追加の NFS 例外は、option=collection という形式のテキストを追加することで指定できます。ここで、option は、クライアントの集まり (collection) に付与するアクセス権のタイプを定義する、rorw、または root のいずれかです。collection の指定には、「クライアントタイプ」表の接頭辞文字と、DNS ホスト名/ドメイン名または CIDR ネットワーク番号を使用します。たとえば、sf.example.com ドメイン内のすべてのホストに読み取り/書き込みアクセス権を付与し、192.168.44.0/24 ネットワーク内のホストに root アクセス権を付与するには、次のようなコマンドを使用します。

set sharenfs="ro,anon=153762,rw=.sf.example.com,root=@192.168.44.0/24"

注 -  この例は NFS 例外にのみ該当します。

ネットグループ名は、個別の完全修飾ホスト名を使用できる場所であればどこでも使用できます。たとえば、engineering ネットグループに読み取り/書き込みアクセス権を付与するには、次のように指定します。

set sharenfs="ro,rw=engineering"

NFS プロトコルの文字セットエンコーディング

通常、ファイル名に使用する文字セットエンコードは指定されません。NFSv3 プロトコルと NFSv2 プロトコルは文字セットを指定しません。NFSv4.0 および NFSv4.1 では UTF-8 を使用することになっていますが、すべてのクライアントが従うわけではなく、この制限がサーバーによって強制されることもありません。シェアの「UTF-8 のみ」オプションが無効になっている場合、これらのファイル名は、エンコードが認識されることなく、文字どおりにファイルシステムに書き込まれます。したがって、同じエンコードを使用しているクライアントのみがこれらを解釈できます。ただし、SMB では、ファイル名をサーバー側で解釈できるように、ファイル名を UTF-8 で保存することが要求されます。これにより、任意のクライアントエンコードをサポートすることはできなくなりますが、SMB でのアクセスは引き続き可能です。

そのような構成をサポートするには、文字セットエンコードをシェア全体またはクライアント単位で設定します。サポートされている文字セットエンコードは次のとおりです。

cp932
euc-tw
iso8859-7
koi8-r
euc-cn
iso8859-1
iso8859-8
shift_jis
euc-jp
iso8859-2
iso8859-9
euc-jpms
iso8859-5
iso8859-13
euc-kr
iso8859-6
iso8859-15

デフォルトの動作では、文字セットエンコードは指定されません (パススルー)。BUI では、標準の例外リストメカニズムによって文字セットを選択できます。CLI では、各文字セット自体がオプションになり、そこに 1 つ以上のホストを指定します。* は、シェア全体の設定であることを示します。たとえば、次を確認してください。

hostname:shares default> set sharenfs="rw,euc-kr=*"

これは、euc-kr をデフォルトのエンコードとしてファイルシステムをシェアします。次を確認してください。

hostname:shares default> set sharenfs="rw,euc-kr=host1.domain.com,euc-jp=host2.domain.com"

これは、host1 には euc-krhost2 には euc-jp を使用し、ほかのすべてのクライアントにはデフォルトのエンコードを使用します。ホストのリストの形式は、ほかの CLI NFS オプションの形式に従います。

一部の NFS クライアントでは、代替ロケールが正しくサポートされません。詳細は、使用している NFS クライアントのドキュメントを参照してください。

NFS プロトコルのセキュリティーモード

セキュリティーモードは、シェアベースで設定します。次のリストでは、Kerberos セキュリティー設定について説明します。

  • krb - Kerberos V5 によるエンドユーザー認証

  • krb5i - krb5 に完全性保護を加えたもの (データパケットに改ざんがないことが保証される

  • krb5p - krb5i にプライバシ保護を加えたもの (データパケットに改ざんがないことと暗号化されていることが保証される)

セキュリティーモードは、option=mode という形式のテキストを追加することで指定します。ここで、optionsecmode はセキュリティー設定です。例:

hostname: shares default> set sharenfs="sec=krb5" 

注 -  = 文字を含む CLI プロパティー値は引用符で囲む必要があります。

複数の Kerberos タイプの組み合わせをセキュリティーモード設定で指定できます。次の表に示すように、組み合わせのセキュリティーモードにより、クライアントは一覧表示されている任意の Kerberos タイプでマウントできます。

表 131  Kerberos タイプの組み合わせ
設定
説明
sys
システム認証
krb5
Kerberos v5 のみ - クライアントはこのフレーバを使用してマウントする必要があります。
krb5:krb5i
Kerberos v5 に完全性を加えたもの - クライアントは一覧表示されている任意のフレーバを使用してマウントできます。
krb5i
Kerberos v5 完全性のみ - クライアントはこのフレーバを使用してマウントする必要があります。
krb5:krb5i:krb5p
Kerberos v5 に完全性またはプライバシを加えたもの - クライアントは一覧表示されている任意のフレーバを使用してマウントできます。
krb5p
Kerberos v5 プライバシのみ - クライアントはこのフレーバを使用してマウントできます。

予約されたポート

システム認証に予約されたポートを設定するには、この例に示すように、resvport を使用します。

set sharenfs="sec=sys,rw,resvport"

resvport は、システム認証のセキュリティーモード sec=sys でのみ使用できます。