Red Hat Enterprise LinuxでのNFSサーバーを設定するには、NFS サーバー設定ツール (redhat-config-nfs) を使用する方法、、手動で設定ファイル(/etc/exports) を編集する方法、 /usr/sbin/exportfsコマンドを使用する方法 の3つがあります。
NFS サーバー設定ツールを使用する場合の詳細は、 Red Hat Enterprise Linux システム管理ガイドの章、 ネットワークファイルシステム(NFS)を参照ください。 このセクションでは手動で /etc/exportsを編集する方法と、 /usr/sbin/exportfsコマンドを使って NFSファイルシステムをエクスポートする方法について説明します。
/etc/exports ファイルはどのファイルシステムがリモートホストにエクスポートされるかを制御して、 オプションを指定します。空白行は無視されます。 コメントはラインの最初を「#」マークにしてください。 長い行はバックスラッシュ(\)を使用してラップできます。 各エクスポート対象ファイルシステムは、それぞれ独自の行上になければいけません。 エクスポート対象ファイルシステムの 後ろに置かれた許可ホストの一覧は、 空白文字で区切られていなければなりません。 各ホストのオプションは ホスト識別子の直後にあるかっこ内に配置し、 ホスト識別子と最初のかっこの間に空白がないようにしてください。
エクスポート対象ファイルシステムのラインは次のような構造になっています。
<export> <host1>(<options>) <hostN>(<options>)... |
この中の<export> をエクスポートされたディレクトリに置き換えてください。<host1> はエクスポートを共有しているホストまたはネットワーク に置き換えてください。 そして (<options> をそのホストまたは ネットワークのオプションに置き換えてください。 追加ホストは空白で区切られたリストに指定することができます。
次の方法でホスト名を指定することができます。
single host — ある1つのホストを完全修飾ドメイン名/ホスト名/IPアドレスで指定しています。
wildcards — *文字と ?文字を使用して、 特定の文字列に一致する完全修飾ドメイン名のグループ化に使用されます。但し、DNSの逆引き検索が失敗した場合、 偶然機能する可能性のあるIPアドレスはワイルドカードでは使用しないで下さい。
ワイルドカードは思いの外厳密であるので、 完全修飾ドメイン名に使用するときは注意してください。 たとえば、ワイルドカードとして *.example.comを使用すると、sales.example.com はエクスポート対象ファイルシステムにアクセスできますが、 bob.sales.example.comはアクセスできません。 この両方に合致させるには *.example.comと*.*.example.com 両方を指定する必要があります。
IP networks — より規模が大きいネットワーク内ではIPアドレスを元にホストを 合致させることができます。たとえば、192.168.0.0/28によって、192.168.0.0から192.168.0.15までの 最初16個のIPアドレスはエクスポート対象ファイルシステムにアクセスできますが、192.168.0.16以上のものはできません。
netgroups — @<group-name>として 作成されたNISネットグループ名が使用できます。 これは事実上、NISサーバがこのエクスポート対象ファイルシステムのアクセス制御 を行なうことを意味し、/etc/exportsに影響を与えることなくユーザーをNISグループに追加したり、 NISグループから削除したりすることができます。
/etc/exportsにはエクスポート対象ディレクトリと、 そのディレクトリの使用を許可されているホストの指定が最低必要となります。
/exported/directory bob.example.com |
この例では、 bob.example.comによって/exported/directory/をマウントすることができます。 この例ではオプションの指定がないため、次のデフォルトNFSオプションが有効となります。
ro — エクスポート対象ファイルシステムのマウントは読み取り専用です。ファイルシステム上で共有するデータはリモートホストから変更できません。 ホストからファイルシステムの変更をできるようにするには、 rw(読み書き)オプションを指定してください。
async — サーバーによる不規則な周期でデータの書き込みを許可します。 この設定はエクスポート対象のファイルシステムが読み取り専用の場合に 最も機能します。 読み書きが許可されたファイルシステムへホストが変更を加えている時にサーバーがクラッシュするとデータが消失する場合があります。 sync オプションを指定することによって、 クライアントによる書き込み要求が完了する前にすべてのファイルの書き込みがディスクにコミットされます。
wdelay — 別の書き込み要求が発生するおそれがあるとき、 NFSサーバーはディスクへの 書き込みを遅らせます。この結果、別々の書き込みコマンドによってディスクにアクセスする回数が減り、 書き込みオーバーヘッドが少なくなることでパフォーマンスが向上します。no_wdelayは この機能をオフにしますが、利用できるのは、syncオプションを使用している場合だけです。
root_squash — ユーザー nfsnobodyにユーザーIDを与え、 リモート接続している rootユーザーからrootの権限を取り上げます。 これにより、リモートrootユーザーの権限を最低のローカルユーザーまで "押し下げ"て、リモートサーバーにあるファイルの不正変更を効果的に防ぎます。 また、no_root_squashオプションはrootの押し下げをオフにします。 rootを含めてすべてのリモート ユーザーを押し下げるには、all_squashオプションを使用します。 ユーザーIDとグループIDを指定して ある特定ホストからのリモートユーザーと一緒に使用するには、anonuidオプションとanongid オプションをそれぞれ使用します。 その場合、 リモートNFSユーザーの為に特別なユーザーアカウントを作成することにより (anonuid=<uid-value>とanongid=<gid-value>)の共有と指定ができます。 <uid-value> はユーザーID番号で、 <gid-value> はグループID番号です。
![]() | 重要 |
---|---|
デフォルトでは アクセス制御リスト (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行は同じ内容ではありません。
第1行目は、/homeディレクトリへの読み書きのアクセスを bob.example.comのユーザーのみに許可します。 第2行目は、 ディレクトリを読み取り専用としてマウントする許可を bob.example.comのユーザーに与えますが、他のユーザーは読み書き可能としてマウントすることができます。 |
/etc/exportsを編集してNFSサーバーを設定する方法の詳細は Red Hat Enterprise Linux システム管理ガイドの章、ネットワーク ファイル システム (NFS)を 参照ください。
NFSによりリモートユーザーに エクスポートされるすべてのファイルシステムと、これらファイルシステムのアクセスレベルの一覧は/etc/exportsファイルにあります。 nfsサービスが起動されると、 /usr/sbin/exportfsコマンドが開始され、 このファイルを読み出します。 そして、リモートユーザーが使用できるファイルシステムを rpc.mountdとrpc.nfsd に伝えます。
手動で行なう場合、 /usr/sbin/exportfsコマンドを使用すれば、 NFSサービス再起動しなくても、選択したディレクトリをrootユーザーによってエクスポート/アンエクスポートすることができます。 /usr/sbin/exportfsに適切なオプションが渡されると、 エクスポート対象のファイルシステムが/var/lib/nfs/xtab に書き込まれます。 ファイルシステムに対するアクセス権を判断するときに rpc.mountdはxtabファイルを参照するため、 エクスポート対象のファイルシステムの一覧に対する変更は直ちに有効となります。
/usr/sbin/exportfsでよく使われるオプションは次の通りです。
-r — /etc/exportsに一覧表示されているすべてのディレクトリは、 /etc/lib/nfs/xtabに新しいエクスポート一覧を作成することによってエクスポートされます。 このオプションは/etc/exportsになされた変更を使って事実上このエクスポート一覧を更新します。
-a — /usr/sbin/exportfsに渡される その他のオプションに基づき、ディレクトリを全てエクスポートまたはアンエクスポートします。 他のオプションが指定されていない場合は /usr/sbin/exportfsによって /etc/exportsに指定されたファイルシステムを全てエクスポートします。
-o file-systems — /etc/exportsにないディレクトリをエクスポート対象として指定できます。 file-systems をエクスポートされる追加ファイルシステムと置き換えてください。 /etc/exportsに指定されたやり方で、 これらのファイルシステムをフォーマットしてください。 /etc/exports構文についての詳細は 項9.3.1を参照ください。 このオプションは あるエクスポート対象のファイルシステムをエクスポート対象ファイルシステムの一覧に追加する前によく試験的に使用されます。
-i — /etc/exportsを無視します。 コマンドラインから出されるオプションのみがエクスポート対象ファイルシステムを 定義するのに使用されます。
-u — 共有ディレクトリをすべてアンエクスポートします。 /usr/sbin/exportfs -uaコマンドはNFSデーモンが全て稼動している間に NFSファイルの共有をサスペンドします。 NFS共有を再び有効にするには、exportfs -rを入力します。
-v — 冗長動作。exportfsコマンドを実行する時、 エクスポート/アンエクスポートするファイルシステムは、より詳しい内容表示をします。
/usr/sbin/exportfsコマンドにオプションが渡されないときは、 現在エクスポートされているファイルシステムの 一覧が表示されます。
/usr/sbin/exportfsコマンドの詳細はexportfs man ページを参照ください。