9.2. NFSサーバー設定ファイル

NFSを使用してファイルとディレクトリを共有するシステムを作成することは簡単です。NFSによりリモートユーザーに エクスポートされるすべてのファイルシステムと、これらのファイルシステムに関連付けられているアクセス権は、 /etc/exportsファイルにあります。このファイルはexportfsコマンドに よって読み出され、rpc.mountdrpc.nfsdに、許可ホストがファイルシステムの リモートマウントをするために必要な情報を提供します。

exportfsコマンドを使用すれば、rootユーザーはさまざまなNFSサービスを再起動しなくてもディレクトリを 選択してエクスポート/アンエクスポートできます。exportfsに適切なオプションが渡されると、 エクスポート対象ファイルシステムが/var/lib/nfs/xtabに書き込まれます。ファイルシステムに 対するアクセス権を決定するときにrpc.mountdxtabファイルを参照するので、 エクスポートファイルシステムの一覧に対する変更はただちに有効になります。

exportfsを使用するときは、次のような各種のオプションが利用できます:

exportfsコマンドにオプションが渡されないときは、現在エクスポートされているファイルシステムの 一覧が表示されます。

/etc/exportsへの変更内容も、service nfs reloadコマンドを使ってNFSサービスをリロードすることで読み込まれます。これによって、/etc/exportsファイルを再エクスポートする間もNFSデーモンは稼働し続けます。

9.2.1. /etc/exports

/etc/exportsファイルはどのファイルシステムがリモートホストにエクスポートされるかを 制御して、オプションを指定します。空白行は無視され、コメントは「#」マークを 使用して作成でき、長い行はバックスラッシュ(\)を使用してラップできます。 各エクスポートファイルシステムは、それぞれ独自の行上になければいけません。。エクスポートファイルシステムの 後ろに置かれた許可ホストの一覧は、空白文字で区切られていなければいけません。ホストそれぞれのオプションは ホスト識別子の直後にあるかっこ( )内に配置し、ホスト識別子と最初のかっこ( )の間に空白があってはいけません。

その最も単純な書式で/etc/exportsが必要とするのは、エクスポート対象ディレクトリと、 そのディレクトリの使用を許可されているホストだけです:

/some/directory bob.example.com
/another/exported/directory 192.168.0.3

/sbin/service nfs reloadコマンドを使用して/etc/exportsを 再エクスポートした後、bob.example.comホストは/some/directoryを マウントでき、192.168.0.3/another/exported/directoryを マウントできます。この例ではオプションを指定していないので、次のようなデフォルトのNFSプリファレンスが有効になります:

これらのデフォルトに上書きするには、それを行うオプションを指定しなければいけません。たとえば、 rwを指定しなければ、そのエクスポートが共有されるのは読み取り専用だけになります。 すべてのエクスポートファイルシステムの個々のデフォルトは明示的に上書きしなければいけません。 また、ほかのオプションはデフォルト値がないところでは使用できます。これには、サブツリーのチェックを 無効にする能力、安全でないポートからのアクセス許可、及び安全でないファイルロックの許可(特定の初期 NFSクライアント実装には必要)などが含まれます。使用頻度の少ないこれらのオプションについての詳細は、 exports manページを参照してください。

ホスト名を指定するときには、次のような方法を使用します:

警告警告
 

/etc/exportsファイルをフォーマットする方法は非常に厳密で、特に空白文字の使用について重要です。 エクスポートファイルシステムをホストから離し、ホスト同士を空白文字で離すことを忘れないでください。ただし、 コメント行で使用する場合を除き、ファイル内にこれ以外の空白文字がないようにしてください。

たとえば、次の2行は同じ内容ではありません。

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

第1行では、bob.example.comのユーザーだけが/homeディレクトリに 読み書きアクセスができます。第2行では、bob.example.comのユーザーはそのディレクトリを 読み取り専用(デフォルト)のみでマウントできるだけですが、他のユーザーは読み書きでマウントできてしまいます。