9.3. NFSサーバー設定

Red Hat Enterprise Linux で NFSサーバーを設定するには、NFS サーバー設定ツール (system-config-nfs) を使用する方法、手動で設定ファイル(/etc/exports) を編集する方法、及び/usr/sbin/exportfsコマンドを使用する方法の3つがあります。

NFS サーバー設定ツールを使用する場合の詳細は、 Red Hat Enterprise Linux システム管理ガイドの章、ネットワークファイルシステム(NFS)を参照ください。このセクションでは手動で /etc/exportsを編集する方法と、/usr/sbin/exportfsコマンドを使って NFSファイルシステムをエクスポートする方法について説明します。

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

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

エクスポート対象ファイルシステムのラインは次のような構造になっています。

<export> <host1>(<options>) <hostN>(<options>)...

この中の<export> をエクスポートされるディレクトリに置き換えてください。<host1> はエクスポートを共有しているホストまたはネットワークに置き換えてください。そして<options> をそのホストまたはネットワークのオプションに置き換えてください。追加ホストは空白で区切られたリストで指定することができます。

次の方法でホスト名を指定することができます。

最も簡単な形式では、/etc/exportsファイルはエクスポート対象ディレクトリとそのディレクトリへアクセス許可のホストだけを指定します。以下の例の様になります:

/exported/directory bob.example.com

この例では、 bob.example.comによって/exported/directory/をマウントすることができます。この例ではオプションの指定がないため、次のデフォルト NFS オプションが有効となります:

重要重要
 

デフォルトでは アクセス制御リスト (ACL)はRed Hat Enterprise LinuxのNFSによってサポートされます。 この機能を無効にするには、ファイルシステムをエクスポートする際にsno_aclオプションを指定してください。この機能に関する詳細は Red Hat Enterprise Linux システム管理ガイド の章、ネットワーク ファイル システム(NFS)を参照ください。

各エクスポート対応のファイルシステムのデフォルトを確実に無効にしてください。 例えば、rwオプションが指定されていない場合、 エクスポート対応のファイルシステムは読み取り専用として共有されます。 次の例は、 2つのデフォルトオプションを無効にする /etc/exportsのラインです。

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

この例では192.168.0.3 によって /another/exported/directory/ 読み書きをマウントすることができます。また、クライアントからの書き込み要求が完了する前に ディスクに移動されたものすべてがディスクにコミットされます。

さらに、デフォルト値が指定されていない場合は 他のオプションを使用することができます。 これには、サブツリーのチェックを無効にする機能、 安全でないポートからのアクセス許可、安全でないファイルロックの許可(特定の初期 NFSクライアント実装に必要)などがあります 使用頻度の少ないこれらのオプションについての詳細は exports manページを参照してください。

警告警告
 

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

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

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

第1行目は、/homeディレクトリへの読み書きのアクセスをbob.example.comのユーザーのみに許可します。第2行目は、ディレクトリを読み取り専用としてマウントする許可を bob.example.comのユーザーに与えますが、他のユーザーは読み書き可能としてマウントできます。

/etc/exportsを編集してNFSサーバーを設定する方法の詳細は Red Hat Enterprise Linux システム管理ガイドの章、ネットワーク ファイル システム (NFS)を 参照ください。

9.3.2. exportfsコマンド

NFS によりリモートユーザーにエクスポートされるすべてのファイルシステムと、これらファイルシステムのアクセスレベルの一覧は/etc/exportsファイルにあります。nfsサービスが起動されると、/usr/sbin/exportfsコマンドが開始され、このファイルを読み出し、実際のマウントプロセスの為に制御をrpc.mountd (if NFSv2 or NFSv3)に渡します。そして、リモートユーザーが使用できるファイルシステムのあるrpc.nfsd に渡します。

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

/usr/sbin/exportfsでよく使われるオプションは次の通りです。

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

/usr/sbin/exportfsコマンドの詳細はexportfs man ページを参照ください。

9.3.2.1. NFSv4 でexportfsコマンドの使用

NFSv4 は NFSv2 や NFSv3 とは異なりrpc.mountdプロトコルを使用しない為、ファイルシステムのマウントは変更されました。

NFSv4 のクライアントは NFSv4 疑似ファイルシステムと呼ばれる単独ファイルシステムとしてNFSv4 サーバーによってサービスされた全てのエクスポートを閲覧することができます。Red Hat Enterprise Linux では、この疑似ファイルシステムは単独の、真正ファイルシステムとして、fsid=0オプションと共にエクスポート時に識別されます。

たとえば、次のコマンドは NFSv4 上で実行可能です:

mkdir /exports
mkdir /exports/opt
mkdir /exports/etc
mount --bind /usr/local/opt /exports/opt
mount --bind /usr/local/etc /exports/etc
exportfs -o fsid=0,insecure,no_subtree_check gss/krb5p:/exports
exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/opt
exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/etc

この例では、クライアントは--bindオプションの使用により、マウントする複数ファイルシステムが提供されます。