Ubuntu8.04をNFSv4クライアントにする

CentOSで作ったNFSサーバで/homeディレクトリを共有している。さすがにディストリビューションが異なるUbuntuで/homeそのものを共有するとアプリケーションの設定などに不整合が出そうだが、データファイルの共有のためUbuntuでもマウントしたい。NFSはバージョン4を使っている。

まずNFSのクライアント用パッケージをインストールする。

ishii@ubuntu:~$ sudo aptitude install nfs-common

これだけでとりあえずマウントはできるようになる。ただしユーザID、グループIDがマップできていないので書き込みには問題がある。

ishii@ubuntu:~$ sudo mount -t nfs4 -o proto=tcp,port=2049 storage1:/ /mnt
ishii@ubuntu:~$ mount
...
storage1:/ on /mnt type nfs4 (rw,proto=tcp,port=2049,addr=192.168.0.24,clientaddr=192.168.0.130)
ishii@ubuntu:~$ ls /mnt -l
合計 24
drwxr-xr-x 51 4294967294 4294967294  4096 2008-08-20 17:47 ishii
drwx------  2 4294967294 4294967294 16384 2007-10-31 01:49 lost+found
ishii@ubuntu:~$

ユーザID、グループIDのマッピングはidmapdで行う。先ほどインストールしたnfs-commonで一緒にインストールされているので、設定をする。

ishii@ubuntu:~$ sudo vi /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = grandarbre.net

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup
ishii@ubuntu:~$ sudo vi /etc/ldap/ldap.conf
...
base dc=grandarbre,dc=net
uri ldap://ns1 ldap://ns2
...
ishii@ubuntu:~$ sudo vi /etc/default/nfs-common
...
NEED_IDMAPD=yes
...

ここまでやってservice nfs-common restartでNFSを再起動し、マウントしなおすとファイルのオーナ、グループが正しくなっている。

ishii@ubuntu:~$ ls -l /mnt
合計 24
drwxr-xr-x 51 ishii ishii  4096 2008-08-20 17:47 ishii
drwx------  2 root  root  16384 2007-10-31 01:49 lost+found

ところがマウントしたフォルダにアクセスしても、otherとしてのアクセスしかできない。よく考えてみれば、LDAPでのユーザIDは500、ubuntuで作ったユーザIDは1000だった。とりあえず/etc/passwdと/etc/groupでIDを500にしたらうまく行った。