NFSを使用してファイルとディレクトリを共有するシステムを作成することは簡単です。NFSによりリモートユーザーに エクスポートされるすべてのファイルシステムと、これらのファイルシステムに関連付けられているアクセス権は、 /etc/exportsファイルにあります。このファイルはexportfsコマンドに よって読み出され、rpc.mountdとrpc.nfsdに、許可ホストがファイルシステムの リモートマウントをするために必要な情報を提供します。
exportfsコマンドを使用すれば、rootユーザーはさまざまなNFSサービスを再起動しなくてもディレクトリを 選択してエクスポート/アンエクスポートできます。exportfsに適切なオプションが渡されると、 エクスポート対象ファイルシステムが/var/lib/nfs/xtabに書き込まれます。ファイルシステムに 対するアクセス権を決定するときにrpc.mountdはxtabファイルを参照するので、 エクスポートファイルシステムの一覧に対する変更はただちに有効になります。
exportfsを使用するときは、次のような各種のオプションが利用できます:
-r — /etc/exportsに一覧表示されているすべてのディレクトリは、 /etc/lib/nfs/xtabに新しいエクスポート一覧を作成することによってエクスポートされます。 このオプションは/etc/exportsになされた変更を使って事実上このエクスポート一覧を更新します。
-a — exportfsに渡されるほかのオプションに基づいて、 すべてのディレクトリはエクスポート/アンエクスポートされます。
-o options —この使用により ユーザーは/etc/exportsに一覧表示されていないディレクトリを エクスポート対象として指定できます。これらの追加のファイルシステム共有は、 /etc/exportsの中に指定してあるものと同じように書き込まなければ いけません。このオプションは、エクスポートファイルシステムを、エクスポート対象ファイル システムの一覧に永続的に追加する前にテストする目的で使用されます。
-i — /etc/exportsを無視します。 コマンドラインから出されるオプションのみがエクスポートファイルシステムの定義に使用されます。
-u — ディレクトリをリモートユーザーがマウントしないようにアンエクスポートします。 コマンドexportfs -uaは、さまざまなNFSデーモンが稼働している間、NFSファイル共有を事実上 サスペンドします。NFS共有を継続できるようにするには、exportfs -rを入力します。
-v — 冗長動作。exportfsコマンドを実行する時、 エクスポート/アンエクスポートするファイルシステムは、より詳しい内容表示をします。
exportfsコマンドにオプションが渡されないときは、現在エクスポートされているファイルシステムの 一覧が表示されます。
/etc/exportsへの変更内容も、service nfs reloadコマンドを使ってNFSサービスをリロードすることで読み込まれます。これによって、/etc/exportsファイルを再エクスポートする間もNFSデーモンは稼働し続けます。
/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プリファレンスが有効になります:
ro — 読み取り専用。このファイルシステムをマウントしているホストは ファイルシステムを変更できなくなります。ホストがファイルシステムの変更をできるようにするには、 rw(読み書き)を指定しなければいけません。
async — サーバーは適切と判断したときにデータをディスクに書き込むことができます。 ホストがデータを読み取り専用としてアクセスしていればこれは重要ではありませんが、ホストが読み書きファイルシステムに 変更を加えているときにサーバーがクラッシュした場合、データは消失する可能性があります。sync オプションを指定することによって、クライアントの書き込み要求が実際に完了するまではすべてのファイル書き込みを ディスクにコミットしなければいけません。これは、パフォーマンスを低下させる可能性があります。
wdelay — 別の書き込み要求が発生するおそれがあるとき、 NFSサーバーはディスクへの 書き込みを遅らせます。この結果、別々の書き込みコマンドによってディスクにアクセスする回数が減り、 書き込みオーバーヘッドが少なくなることでパフォーマンスが向上します。no_wdelayは この機能をオフにしますが、利用できるのは、syncオプションを使用している場合だけです。
root_squash — nobodyのユーザーIDを与えることにより、リモート接続している rootユーザーからrootの権限を取り上げます。これは事実上、リモート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番号です。
これらのデフォルトに上書きするには、それを行うオプションを指定しなければいけません。たとえば、 rwを指定しなければ、そのエクスポートが共有されるのは読み取り専用だけになります。 すべてのエクスポートファイルシステムの個々のデフォルトは明示的に上書きしなければいけません。 また、ほかのオプションはデフォルト値がないところでは使用できます。これには、サブツリーのチェックを 無効にする能力、安全でないポートからのアクセス許可、及び安全でないファイルロックの許可(特定の初期 NFSクライアント実装には必要)などが含まれます。使用頻度の少ないこれらのオプションについての詳細は、 exports manページを参照してください。
ホスト名を指定するときには、次のような方法を使用します:
single host —ある1つのホストを完全修飾ドメイン名/ホスト名/IPアドレスで指定しています。
wildcards — *文字と?文字を使用して、 特定の文字列に一致する完全修飾ドメイン名のグループ化に使用されます。但し、DNSの逆引き検索が失敗した 場合、偶然機能する可能性のあるIPアドレスはワイルドカードでは使用しないで下さい。
しかし、ワイルドカードは思いの外厳密であるので、完全修飾ドメイン名に使用するときは注意してください。 たとえば、ワイルドカードとして*.example.comを使用すると、sales.example.comはエクスポート ファイルシステムにアクセスできますが、bob.sales.example.comはできません。この両方に合致させ、さらに sam.corp.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ファイルをフォーマットする方法は非常に厳密で、特に空白文字の使用について重要です。 エクスポートファイルシステムをホストから離し、ホスト同士を空白文字で離すことを忘れないでください。ただし、 コメント行で使用する場合を除き、ファイル内にこれ以外の空白文字がないようにしてください。 たとえば、次の2行は同じ内容ではありません。
第1行では、bob.example.comのユーザーだけが/homeディレクトリに 読み書きアクセスができます。第2行では、bob.example.comのユーザーはそのディレクトリを 読み取り専用(デフォルト)のみでマウントできるだけですが、他のユーザーは読み書きでマウントできてしまいます。 |