3.6. NFS サーバーの設定

本セクションでは、NFS サーバーでエクスポートを構成する 2 つの方法の構文およびオプションを説明します。

  • 設定ファイル /etc/exports を手動で編集する方法
  • コマンドラインで exportfs ユーティリティーを使用する方法

3.6.1. /etc/exports 設定ファイル

/etc/exports ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。以下の構文ルールに従います。

  • 空白行は無視する。
  • コメント行は、ハッシュ記号 (#) で始める。
  • 長い行はバックスラッシュ (\) で囲むことができる。
  • エクスポートするファイルシステムは、それぞれ 1 行で指定する。
  • 許可するホストの一覧は、エクスポートするファイルシステムの後に空白文字を追加し、その後に追加する。
  • 各ホストのオプションは、ホストの識別子の直後に括弧を追加し、その中に指定する。ホストと最初の括弧の間には空白を使用しない。
エクスポートエントリー

エクスポートするファイルシステムの各エントリーは、以下のように指定します。

export host(options)

各ホストにそれぞれオプションを付けて、複数のホストを 1 行で指定することもできます。この場合は、以下のように、各ホスト名の後に、そのホストに対するオプションを括弧を付けて追加します。ホストは空白文字で区切ります。

export host1(options1) host2(options2) host3(options3)

この構造では、次のようになります。

export
エクスポートするディレクトリー
host
エクスポートを共有するホストまたはネットワーク
options
ホストに使用されるオプション

例3.1 簡潔な /etc/exports ファイル

最も簡単な方法は、/etc/exports ファイルに、エクスポートするディレクトリーと、そのディレクトリーへのアクセスを許可するホストを指定することです。

/exported/directory bob.example.com

ここで、bob.example.com は、NFS サーバーから /exported/directory/ をマウントできます。この例ではオプションが指定されていないため、NFS はデフォルトのオプションを使用します。

重要

/etc/exports ファイルのフォーマットでは、特に空白文字の使用は非常に厳しく扱われます。ホストからエクスポートされるファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、絶対に空白文字を追加しないでください。

たとえば、以下の 2 つの行は意味が異なります。

/home bob.example.com(rw)
/home bob.example.com (rw)

最初の行は、bob.example.com からのユーザーにのみ、/home ディレクトリーへの読み込み/書き込みアクセスを許可します。2 番目の行は、bob.example.com からのユーザーにはディレクトリーを読み込み専用 (デフォルト) でマウントすることを許可しており、その他のユーザーには読み込み/書き込みでマウントすることを許可します。

デフォルトのオプション

エクスポートエントリーのデフォルトオプションは次のとおりです。

ro
エクスポートするファイルシステムは読み込み専用です。リモートホストは、このファイルシステムで共有されているデータを変更できません。このファイルシステムで変更 (読み込み/書き込み) を可能にするには、rw オプションを指定します。
sync
NFS サーバーは、以前の要求で発生した変更がディスクに書き込まれるまで、要求に応答しません。代わりに非同期書き込みを有効にするには、async オプションを指定します。
wdelay
NFS サーバーは、別の書き込み要求が差し迫っていると判断すると、ディスクへの書き込みを遅らせます。これにより、複数の書き込みコマンドが同じディスクにアクセスする回数を減らすことができるため、書き込みのオーバーヘッドが低下し、パフォーマンスが向上します。これを無効にするには、no_wdelay を指定します。これは、デフォルトの sync オプションが指定されている場合に限り利用可能になります。
root_squash

(ローカルからではなく) リモートから接続している root ユーザーが root 権限を持つことを阻止します。代わりに、そのユーザーには、NFS サーバーにより、ユーザー ID nfsnobody が割り当てられます。これにより、リモートの root ユーザーの権限を、最も低いローカルユーザーレベルにまで下げて (squash)、権限を持たずにリモートサーバーに書き込むのを阻止します。この root squashing を無効にするには、no_root_squash オプションを指定します。

(root を含む) すべてのリモートユーザーの権限を下げるには、all_squash オプションを使用します。特定ホストのリモートユーザーに対して、NFS サーバーが割り当てるユーザー ID とグループ ID を指定するには、anonuid オプションと anongid オプションをそれぞれ以下のように使用します。

export host(anonuid=uid,anongid=gid)

ここで uidgid は、それぞれユーザー ID 番号とグループ ID 番号になります。anonuid オプションと anongid オプションにより、共有するリモート NFS ユーザー用の特別なユーザーおよびグループアカウントを作成できます。

デフォルトでは、アクセス制御リスト (ACL) は、Red Hat Enterprise Linux では、NFS によりサポートされています。この機能を無効にするには、ファイルシステムをエクスポートする際に no_acl オプションを指定します。

デフォルトオプションと上書きオプション

エクスポートするファイルシステムのデフォルトはすべて、明示的に上書きする必要があります。たとえば、rw オプションを指定しないと、エクスポートするファイルシステムが読み込み専用として共有されます。以下は、/etc/exports の例になりますが、ここでは 2 つのデフォルトオプションを上書きしています。

/another/exported/directory 192.168.0.3(rw,async)

この例では、192.168.0.3/another/exported/directory/ の読み書きをマウントでき、ディスクへの書き込みはすべて非同期です。

3.6.2. exportfs ユーティリティー

exportfs ユーティリティーを使用すると、root ユーザーは NFS サービスを再起動せずにディレクトリーを選択してエクスポートまたはアンエクスポートできます。適切なオプションが指定されると、exportfs ユーティリティーはエクスポートされたファイルシステムを /var/lib/nfs/xtab に書き込みます。ファイルシステムへのアクセス権を決定する際には、nfs-mountd サービスが xtab ファイルを参照するため、エクスポートしたファイルシステムのリストの変更が直ちに反映されます。

一般的な exportfs オプション

exportfs で利用可能な一般的なオプションの一覧は以下のようになります。

-r
/etc/exports に記載されるすべてのディレクトリーから、/etc/lib/nfs/xtab に新しいエクスポート一覧を作成することで、ディレクトリーがエクスポートされることになります。結果的にこのオプションが /etc/exports のいずれかの変更でエクスポート一覧をリフレッシュすることになります。
-a
exportfs に渡されるその他のオプションに応じて、すべてのディレクトリーをエクスポートするかどうかを判断します。その他のオプションが指定されていない場合、exportfs/etc/exports で指定されたすべてのファイルシステムをエクスポートします。
-o file-systems
/etc/exports 内に記載されていない、エクスポートされるディレクトリーを指定します。file-systems の部分を、エクスポートされる追加のファイルシステムに置き換えます。これらのファイルシステムは、/etc/exports で指定されたものと同じフォーマットでなければなりません。このオプションは、多くの場合は、エクスポートされるファイルシステムの一覧に永続的に追加する前に、エクスポートされるファイルシステムをテストするために使用されます。
-i
/etc/exports を無視します。コマンドラインから出されたオプションのみが、エクスポート用ファイルシステムの定義に使用されます。
-u
すべての共有ディレクトリーをエクスポートしません。コマンド exportfs -ua は、すべての NFS サービスを稼働状態に維持しながら、NFS ファイル共有を保留します。NFS 共有を再度有効にするには、exportfs -r を使用します。
-v
詳細な表示です。exportfs コマンドを実行するときに表示されるエクスポート、または非エクスポートのファイルシステムの情報が、より詳細に表示されます。

exportfs ユーティリティーにオプションが渡されていない場合は、現在エクスポートされているファイルシステムのリストが表示されます。

関連情報

  • ホスト名を指定するためのその他の方法は、「NFS ホスト名の形式」 を参照してください。
  • エクスポートオプションの完全なリストは、man ページの exports(5) を参照してください。
  • exportfs ユーティリティーの詳細は、man ページの exportfs(8) を参照してください。