前のページ 次のページ 目次

3. NFS サーバの設定

3.1 設定の前に

この HOWTO を読み進める前に、まずサーバ及びクライアントとして使うマ シンの間で、それぞれ互いに telnet 通信ができるように設定しておく必要が あります。もしこの設定がなされていない場合は、 NET-3 HOWTO などを読ん で必要なネットワーク設定を行って下さい。

3.2 はじめのいっぽ

何はともあれ NFS サーバのセットアップがまず必要です。もし読者である あなたが大学のネットワークに参加している場合には、おそらく何台もの NFS サーバが既に存在していることでしょう。これらのサーバに対するアクセス 権があり、この HOWTO をその設定のために読んでいる場合には、この章を読 む必要はありません。 NFS クライアントの設定 に進んで下さい。

また Linux 以外のマシンを NFS サーバにしたい場合は、システムのマニュ アルを探して、サーバ機能の立ち上げ方法と、ファイルシステムを NFS によっ て export する方法とを理解する必要があります。この HOWTO にも、他のいろ いろなシステムでサーバを立ち上げる方法について説明した節を設けてありま す。サーバとしての設定をすべて行うことができたら、この HOWTO の次の章 に進んで下さい。あるいはこの章を読み進んでみても良いかもしれません。こ の章で述べている内容には、サーバにするマシンの種類によらず役に立つこと も一部含まれていますから。

さて、ここまで読み進んできたあなたは、以下のようなたくさんのプログラム の設定をすることになります。

3.3 ポートマッパ(portmapper)

ポートマッパは Linux では portmap か rpc.portmap というファ イル名になっています。私のシステムの man ページによると、これは「DARPA ポートを RPC プログラム番号にマップするプログラム」となっています。さ て、このプログラムが本 HOWTO 文書における最初のセキュリティ・ホールの 候補となります。この穴を塞ぐ方法については NFS のセキュリティ に書いてあります。しつこいようですが、必ず読んでおくようにして下さい。

ではポートマッパを起動しましょう。おそらく /usr/sbin ディレク トリに portmap か rpc.portmap という名前で存在しているはずで す(一部のシステムでは rpcbind となっていることもあります)。とり あえず今は手動で起動すれば良いですが、このプログラムはシステムをブート するたびに実行させるものですから、 rc スクリプトに記述しておくとよいで しょう。 rc スクリプトに関しては init の man ページに詳しい記述がある でしょう。おそらく /etc/rc.d か /etc/init.d、 /etc/rc.d/init.d あたりのディレクトリにあるはずです。 inet のようなファイル名のものが、おそらく編集対象となるスクリプト です。しかし、どのように編集すればよいかというのはこの HOWTO の範囲を 越えていますので触れません。さて、ポートマップを起動し、実行されている かを ps aux で確認しましょう。動いてましたか?よろしい。

3.4 mountd と nfsd

次に必要になるプログラムは mountd と nfsd です。しかしこれらを起動 する前に、まず別のファイルを編集しなければなりません。 /etc/exports です。例えば eris というマシンにある /mn/eris/local というディレクトリ以下を apollon というマ シンから利用できるようにしたい場合を考えましょう。この場合は eris の /etc/export に以下のような行を挿入します。


/mn/eris/local  apollon(rw)

ここでは appllon に /mn/eris/local への読み書きの許可を 与えています。 rw の代わりに ro とすることもでき、この場合は 読み出しだけの許可になります(何も書かなければ読み出しだけの許可が与え られます)。他にもいくつかオプションが ありますが、そのうちセキュリティ に関連したものについては後で触れるつもりです。これらオプションのすべて は exports の man ページに記述があります。少なくとも一生に一度は 目を通しておくべきでしょう。また exports には全てのホストを一つ一 つ書く必要はなく、もう少し便利な方法があります。例えば NIS や NYS (YP という方が馴染みがあるかもしれません)を使っている場合は、ネットグルー プによる指定が可能です。 NIS を使っていなくても、マウント許可を与える ホストの指定にドメインのワイルドカードや IP のサブネットを用いることが できます。ただしこのように一律な許可属性を与えるときは、許可したくない ユーザにまでアクセス許可を与えていないかどうか注意する必要があります。

注意: この exports ファイルの書式は他の Unix で使われるものとは異 なっています。他の Unix における exports ファイルに関しては、この HOWTO にも別の節を設けてあります。

では mountd (rpc.mountd というファイル名かもしれません)と nfsd (こちらも rpc.nfsd かも)を起動することにしましょう。これら のプログラムはいずれも exports ファイルを参照します。

/etc/exports を編集したら、 mountd と nfsd にファイルが変 更されたことを知らせる必要があります。伝統的な方法は exportfs を 実行することでしたが、たいていの Linux 配布パッケージには exportfs プログラムは入っていません。このような場合は以下のスクリ プトをお使いのホストに準備すると良いでしょう。


#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo re-exported file systems

このファイルを例えば /usr/sbin/exportfs という名前で保存し、 忘れずに chmod a+rx します。以降は exports ファイルを編集す るたびに root になってこの exportfs コマンドを実行して下さい。

では mountd と nfsd がちゃんと実行されているかを確認しましょう。ま ず rpcinfo -p を実行して下さい。以下のような表示が出ると思います。


   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    745  mountd
    100005    1   tcp    747  mountd
    100003    2   udp   2049  nfs
    100003    2   tcp   2049  nfs

このようにポートマッパによって portmapper 自身と mountd、 nfsd がアナ ウンスされます。

rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused というような表示が出た場合には、ポートマッパが 実行されていません。修正して下さい。No remote programs registered. という表示が出た場合はポートマッパに問い合わせる許可 が無いか、何かがおかしくなっています。 nfsd、 mountd とポートマッパを kill して、もう一度最初から実行しなおしてみて下さい。

ポートマッパのサービスに関する表示を確認したら、 ps によっても確認 してみて下さい。ポートマッパはサービスプログラムが終了した後でもサービ スポートを報告してしまうので、何かおかしくなったら ps でチェックしてみ る方が賢い場合もあります。

ブートの度に mountd と nfsd を起動したい場合には、もちろんポートマッ パの場合と同じようにシステムの rc スクリプトを修正する必要があります。 おそらくほとんどの場合には、あなたのマシンに既にスクリプトが存在してい ると思います。この場合は必要な部分をコメントアウトして、必要なデーモン が適切な実行レベルで起動されるようにするだけです。

読んでおくべき man ページは portmap、 mountd、 nfsd、及び exports です。

さて、ここまで私の言ってきたことがすべて実行されたら、 NFS クライ アントを起動するための準備が整ったことになります。


前のページ 次のページ 目次