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ファイルシステムをエクスポートする方法について説明します。
/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(読み書き)オプションを指定してください。
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 (if NFSv2 or NFSv3)に渡します。そして、リモートユーザーが使用できるファイルシステムのある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 ページを参照ください。
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オプションの使用により、マウントする複数ファイルシステムが提供されます。