nfs

(作成:2005/01)

ネットワーク越しのマウントが可能なファイルシステム。ファイルの共有場所とかに使えて便利だけど、データが平文だしイントラネットでのみ使うのが常套。

設定

サーバ設定

以下のパッケージを導入。

# apt-get install nfs-common nfs-kernel-server
  • 追加パッケージ
    keyutils libnfsidmap2 libtirpc1 rpcbind

マウントさせたいディレクトリについて、以下のファイルで設定する。

#### /etc/exports

/opt    192.168.1.0/24(rw)

ディレクトリ、許可IP、権限の順。リードオンリーの場合は(ro)となる。 んで、 nfs-kernel-server の再起動。

# /etc/init.d/nfs-kernel-server restart

TCP Wrapperを使いたい場合、 portmap を立ち上げておく必要がある。

# /etc/init.d/portmap start

Wrapperの設定を行なう。

#### /etc/hosts.allow

portmap: 192.168.1.
mountd:  192.168.1.

クライアント用の設定

マウントは以下のようにして行なう。

# mount oni:/opt /mnt

/etc/fstab には以下のような記述をすれば自動マウントできる。

#### /etc/fstab

oni:/opt        /mnt    nfs    defaults,noauto,rsize=8192,wsize=8192    0    0

rsize wsize はそれぞれread/write時のキャッシュサイズ。これにより挙動不審になる場合もあるので注意。

また、NFSはサーバ/クライアント間の通信ではユーザ/グループIDは変更されない。つまり、どちらか片方にのみ存在するユーザ/グループIDでファイルを送受信すると、もう片方でそのファイルが誰の物か判らなくなる可能性があるので注意。
逆に考えれば、グループIDを用いてローカルPC内にアクセス制限を設けるのと同じように制限を掛けることができる。例えば以下のような感じ。

  1. ローカルでのみアクセス可能なグループとして local(1000) を作成。
  2. マウントしたいディレクトリのIDを (任意ユーザ):local として作成、パーミッションを 770 とする。
  3. このディレクトリを使用するユーザを local(1000) に所属させる。
  4. マウントすると、 local(1000) に所属しているユーザのみがアクセスできる。