玄箱はNASとはいいながら、提供するアクセスはウィンドウズとMacOS向けのsmb/atalkのみで、NFSは提供していません。せっかくのLinuxマシンなのですから、NFSサーバ機能も提供してほしいところです。
玄箱は、実はたくさんの追加パッケージをCD-ROMに収めています。CD-ROMのbinaryというディレクトリの中に、TAR+GZIP形式で数々のパッケージが収録されています。その中に NFS も含まれています。nfs.tar.gzがそれです。なお、NFSサーバを利用するには、このほかに portmap-5beta.tar.gzもインストールする必要があります。
Windows上でCD-ROMからファイルを玄箱にコピーしましょう。デフォルトで、shareという共有名が見えていると思いますので、ここに必要なファイルをドラッグアンドドロップしておけばいいでしょう。面倒な場合は、/binary ディレクトリを丸ごとコピーしてもいいでしょう。
展開したら、玄箱にログインして、スーパーユーザになります。なったらまずはファイルを展開しましょう。
# cd / # tar -zxf /mnt/share/nfs.tar.gz # tar -zxf /mnt/share/portmap-5beta.tar.gz #
展開がすんだら、設定を行ないます。
特に設定というようなものはないですが、自動起動するようにしておきましょう。chkconfig がないので、手でスタートアップを登録します。/etc/init.d/portmapをのぞくと、
5: # chkconfig: S 41 10
という記述があります。これは、S41portmap/K10portmap というシンボリックリンクをrunlevel Sと必要なところに作れということを意味します。Sについては指定のある Sに作ればいいでしょう。Kは0, 6に作ります。
# ln -s /etc/init.d/portmap /etc/rc.d/rcS.d/S41portmap # ln -s /etc/init.d/portmap /etc/rc.d/rc0.d/K10portmap # ln -s /etc/init.d/portmap /etc/rc.d/rc6.d/K10portmap
NFSも同様に、サーバを自動起動するようにします。NFSは nfs-common(statd)とnfs-user-server(nfsd/mountd)との二つを起動する必要があります。同じように、ファイルを除いてみると、次のようになっています。
nfs-common:5: # chkconfig: 2345 19 81
nfs-user-server:4: # chkconfig: 2345 25 25
Sを2,3,4,5に、Kを0,6に作ります。
# ln -s /etc/init.d/nfs-common /etc/rc.d/rc2.d/S19nfs-common # ln -s /etc/init.d/nfs-common /etc/rc.d/rc3.d/S19nfs-common # ln -s /etc/init.d/nfs-common /etc/rc.d/rc4.d/S19nfs-common # ln -s /etc/init.d/nfs-common /etc/rc.d/rc5.d/S19nfs-common # ln -s /etc/init.d/nfs-common /etc/rc.d/rc0.d/K81nfs-common # ln -s /etc/init.d/nfs-common /etc/rc.d/rc6.d/K81nfs-common # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc2.d/S25nfs-user-server # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc3.d/S25nfs-user-server # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc4.d/S25nfs-user-server # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc5.d/S25nfs-user-server # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc0.d/K25nfs-user-server # ln -s /etc/init.d/nfs-user-server /etc/rc.d/rc6.d/K25nfs-user-server
これで、準備はオッケーです。
最後に、NFSで提供するディレクトリへのアクセス許可を行ないます。設定は、/etc/exports に記述します。
# exports from kuro-box /mnt 192.168.0.0/255.255.255.0(rw,no_root_squash)
詳細は、まっとうなLinux マシンで man exportsなどとして調べてほしいが、簡単に書いておくと、/mntというディレクトリを、192.168.0.0/255.255.255.0のクラスCネットワークに対して公開するという指定です。このとき、このディレクトリは読み書き可能(rw)で、NFSクライアント側のrootがアクセスした場合にuidをすり替えないでそのままuid=0としてアクセスすることを許可する(no_root_squash)ように指定しています。 roとすれば読み込み専用にできますし、root_squashとすればrootのアクセスはanonymous(通常は nobodyか?)で置き換えられます。all squash(誰からのアクセスもanonymous扱いにする)とか squash uids=…やsquash gids=…といったuidやgidごとにsquashするかどうかが指定できたりもします。
なお、no_root_squashはある意味危険な許可です。LAN内のマシンを完全に掌握していない限りしないほうがいいでしょう。つける場合は確信をもってやって下さい。
書き換えたら、mountdを再起動するために、nfs-user-server スクリプトを呼び出しておきます。
# /etc/init.d/nfs-user-server restart
これで、リモートからこのディレクトリがマウントできるようになります。
クライアント側では mount コマンドを使って、NFS経由で玄箱のファイルにアクセスできるわけですが、毎度毎度 mount を発行するのも面倒な話です。Linux がクライアントの場合には、autofsを利用することでこの手間を軽減できます。*BSD系の場合はamdで同じことができますが、説明は割愛します。
auto.master は、autofs で管理されたディレクトリの管理元です。多分、ほとんどのディストリビューションはローカルのCD-ROMやFDをマウントするための /misc というエントリを持っていると思います。ここに今回、ネットワーク経由の自動マウントのためのエントリとして /net を加えます。
/misc /etc/auto.misc --timeout=60 /net /etc/auto.net --timeout=300
加えたら、今度は、/etc/auto.net を作ります。
/etc/auto.net には、マウントするNFSディレクトリを列記します。
kuro-box -rw,soft,intr kuro-box:/mnt
先頭は、/net の下のマウントポイントで、真ん中は mount に渡すオプション、最後はNFSサーバの指定になります。この例では kuro-box:/mnt を /net/kuro-box にマウントすることを指定しています。
ディストリビューションによって異なりますが、automount を再起動します。Vine ならば、
# /etc/init.d/automount restart
になります。
あとは、/net/kuro-box にアクセスして、きちんとマウントされることを確認します。
$ ls /net/kuro-box
きちんとマウントされていれば、ファイルが見えるはずです。なお、アクセスがなくなって300秒(auto.masterで指定したtimeoutの秒数)が経過すると自動的にアンマウントされます。
Tipsへ戻る。