この HOWTO を読み進める前に、まずサーバ及びクライアントとして使うマ シンの間で、それぞれ互いに telnet 通信ができるように設定しておく必要が あります。もしこの設定がなされていない場合は、 NET-3 HOWTO などを読ん で必要なネットワーク設定を行って下さい。
何はともあれ NFS サーバのセットアップがまず必要です。もし読者である あなたが大学のネットワークに参加している場合には、おそらく何台もの NFS サーバが既に存在していることでしょう。これらのサーバに対するアクセス 権があり、この HOWTO をその設定のために読んでいる場合には、この章を読 む必要はありません。 NFS クライアントの設定 に進んで下さい。
また Linux 以外のマシンを NFS サーバにしたい場合は、システムのマニュ アルを探して、サーバ機能の立ち上げ方法と、ファイルシステムを NFS によっ て export する方法とを理解する必要があります。この HOWTO にも、他のいろ いろなシステムでサーバを立ち上げる方法について説明した節を設けてありま す。サーバとしての設定をすべて行うことができたら、この HOWTO の次の章 に進んで下さい。あるいはこの章を読み進んでみても良いかもしれません。こ の章で述べている内容には、サーバにするマシンの種類によらず役に立つこと も一部含まれていますから。
急いでいる人は、 Linux 2.2 の節 を見てからここを読んでください。
さて、ここまで読み進んできたあなたは、 以下のようなたくさんのプログラムの設定をすることになります。
ポートマッパは 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
で、次に rpcinfo -p
で確認しましょう。動いてましたか?よろしい。
おっと、一つ注意点があります。ポートマッパへのリモートからの
アクセスは /etc/hosts.allow
ファイルと
/etc/hosts.deny
ファイルの記述によって制限されます。
ポートマッパが動いているのに rpcinfo -p
に失敗する場合は、
これらのファイルをチェックしてください。記述に関する詳細は
セキュリティの節
を見てください。
次に必要になるプログラムは 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
や RPC_PROG_NOT_REGISTERED
というような表示が出た場合には、ポートマッパが実行されていません。
あるいは /etc/hosts.{allow.deny}
の記述が
ポートマッパに作用して、返答をさせないようにしているのかもしれません。
これらのファイルに関する詳細は
セキュリティの節
を見てください。 No remote programs registered.
という表示が出た場合はポートマッパに問い合わせる許可が無いか、
何かがおかしくなっています。 nfsd、 mountd とポートマッパを
kill して、もう一度最初から実行しなおしてみて下さい。
ポートマッパのサービスに関する表示を確認したら、 ps
によっても確認
してみて下さい。ポートマッパはサービスプログラムが終了した後でもサービ
スポートを報告してしまうので、何かおかしくなったら ps
でチェックしてみ
る方が賢い場合もあります。
ブートの度に mountd と nfsd を起動したい場合には、もちろんポートマッ パの場合と同じようにシステムの rc スクリプトを修正する必要があります。 おそらくほとんどの場合には、あなたのマシンに既にスクリプトが存在してい ると思います。この場合は必要な部分をコメントアウトして、必要なデーモン が適切な実行レベルで起動されるようにするだけです。
読んでおくべき man ページは、 portmap, mountd, nfsd, exports です。
さて、ここまで私の言ってきたことがすべて実行されたら、 NFS クライ アントを起動するための準備が整ったことになります。