2008-10-09

Mac OS X から NFS にアクセス

Java の生みの親であるところの James Gosling さんのブログで Mac OS X を NFS クライアントとして使うのは簡単だよ、と書いてあったので試してみた。

Gosling の書いているようにマウントするのは本当に簡単。「/net/ホスト/exportされたディレクトリ」を開けばそれでおしまい。

久々に NFS サーバをセットアップ(というほど大事でもないけど)したのだけど、結果としてはイマイチ使い勝手がよくないかもと思った。

NFS サーバとして試してみたのは、openSUSE 10.3 と Ubuntu Server 8.04 の二台で、openSUSE は YaST で Ubuntsu は Webmin で設定した。自分で実際にちゃんと使ったことがある nfs は v2 までだったので、v4 になるまでに加わった新機能とかそんなのは全然分からないので、適当な設定になっていた可能性もあるけど、ファイルの読み書きは Samba でマウントしたものの方が倍くらい速い。NFS では sync オプションを指定していたのだけど、Samba での動作が sync に相当するのか async に相当するのかが分からないので妥当な比較ではないかもしれない。

また、共有ディレクトリとして誰でもアクセスできるようにするだけでもない限り、サーバとクライアントで uid や gid を揃えないといろいろと不都合があるのは周知だと思う。多くの Linux では uid のデフォルトは 1000 から、gid も各ユーザごとに 1000 が振られていると思う。これに対して Mac OS X では、最初のユーザ(必然的に管理者ユーザ)は uid として 501 が振られ、20(staff) や 80(admin) という group のメンバーになっている(Linux では 20 や 80 はもちろん別のグループになっているか、デフォルトの /etc/group に含まれていないか)。

そういうわけで、uid を Linux と Mac OS X で揃える必要が生じる場合もあるけど、どちらかというと Linux 側で変更したほうが問題は少なそうだ(根拠はない……)。今回マニュアルを読んで初めて知ったのだけど、openSUSE や Uunts では usermod(8) の -u オプションで uid を変更すれば、ホームディレクトリ以下のファイルの owner もまとめて変更してくれるという便利な機能があることが分かった。この NFS サーバにアクセスするのが一人しないのであれば、これで問題は解決する。

ところが、複数の Mac ユーザが同じネットワークにいて、それぞれをパソコン的に使っていると同じ 501 という uid を持つユーザがたくさんいることになってしまって困ってしまう。手間を考えると、サーバ側の uid や gid に合わせて Mac 側を変更することになるのだろうけど、……。クライアントが UNIX だって同じことだけど、UNIX で新規ユーザを作るときとかは uid や gid のことをもっと意識しているだろうから問題になりにくい気がする。

Samba や AFP だと uid とは別の認証方法(というかファイルの所有者と利用者の紐付けの方法)があるので、UNIX 風の生の uid を意識することもないし、ずっと気楽。加えて、そっちの方が速いとなれば、Mac OS X から NFS を使う理由は今はあんまりないかなぁというのが実感。まぁ、要は適材適所なので NFS が生きるような場合もあるんだろうけど。

NFS がらみで昔を懐しんで Auspex をググってみたら、もう会社はないのね。寂しいなぁ。

No comments: