FreeBSD Daily Topics

2011年8月9日Mac OS X LionからFreeBSD NFSv4をマウントして利用する方法

FreeBSD 9-CURRENTにはNFSv4のコードがマージされています。FreeBSD 9.0を使ってNFSv4ストレージシステムの構築が可能です。今回はNFSv4クライアントとしてMac OS X Lionを使う方法を紹介します。

maxosx

How to use the NFSv4 server from Mac OS X Lion

current - 先日公開されたMac OS X Lionは新しくNFSv4に対応したという特徴があります。FreeBSD 9-CURRENTでNFSv4サーバを構築すれば、Mac OS X LionをNFSc4クライアンとして利用することが可能です。マウントはターミナルから次のように行います。

sudo mount_nfs -o vers=4 nfs.example.co.jp:/home/netdisk /Users/daichi/mnt

「-o vers=4」と指定することで、NFSv4を使ったマウントが可能です。サーバに用意したユーザとMac OS X Lionのユーザ名が同じであり、ユーザIDもグループIDもサーバと同じ状態になっていれば、これだけで操作が可能になります。そうでない場合、マウントできないかパーミッションがないものとして各種操作が行えないはずです。

NFSv4の最大の特徴の1つが、サーバに用意したユーザアカウントとユーザIDとグループIDを揃える必要がない、というものですが、Lionに導入されているNFSv4では管理サービスを使わない限り、そのあたりを簡単にハンドリングする方法は提供されていないようです。FreeBSD NFSv4サーバでちょっとした工夫をすることで異なるユーザID/グループIDのマッピングができないこともないのですが、わかりやすい方法とはいいがたいので辞めておきましょう(数字のユーザを作成することでマッピングできるのですが、あまりいい方法とはいえないので⁠⁠。

ここでは素直にユーザIDとグループIDを揃えることで、LionからNFSv4マウントを実施する方法を紹介します。なお、以降の内容はコマンドラインからの作業となりますので、ある程度Mac OS Xを操作することができ、問題が発生しても対処できるユーザの方のみ参考にしてください。Time Machineでバックアップを取ってからの作業を推奨します。

まず、ユーザIDをサーバに用意されているユーザIDと同じ番号へ変更します。たとえば次のように作業します。ここではユーザdaichiのユーザIDを1000へ変更しています。

% sudo dscl . -read /Users/daichi | grep UniqueID
UniqueID: 500
% sudo dscl . -change /Users/daichi UniqueID 500 1000
% sudo dscl . -read /Users/daichi | grep UniqueID
UniqueID: 1000

次に対象ユーザのホームディレクトリ以下すべてのファイルやディレクトリの保有者データを更新します。この作業を忘れると利用できなくなるので注意してください。確実に変更するためにユーザ名ではなくユーザIDを指定して実行したほうがいいかもしれません。

cd /Users
sudo chown -R daichi:staff daichi

次にサーバ上のユーザが所属しているのと同じ名前、同じグループIDのグループを作成します。ここではユーザdaichiがグループdaichiに所属しているものとして作業しています。daichi:daichiであり、1000:500を想定します。⁠GroupMembership: daichi」の項目を追加することで、グループdaichiに所属するユーザがdaichiである、ということを指定しています。GroupMembershipには複数のユーザ名を指定可能です。

sudo dscl . -create /Groups/daichi
sudo dscl . -append /Groups/daichi PrimaryGroupID 500
sudo dscl . -append /Groups/daichi GroupMembership daichi

ユーザのユーザIDとグループIDはid(1)コマンドで確認できます。たとえばLionのdaichiユーザでid(1)を実行すると次のようなデータが表示されます。ユーザIDと所属グループが想定しているものになっていることがわかります。

% id
uid=1000(daichi) gid=20(staff) groups=20(staff),402(com.apple.sharepoint.group.1),500(daichi),401(com.apple.access_screensharing),12(everyone),33(_appstore),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),100(_lpoperator),204(_developer),403(com.apple.sharepoint.group.2)
%

ここで想定しているFreeBSD NFSv4サーバのdaichiユーザでid(1)コマンドを実行すると次のようなデータが表示されます。ユーザIDとグループIDがそろっていることがわかります。

% id
uid=1000(daichi) gid=500(daichi) groups=500(daichi),0(wheel)
%

LionでユーザIDの変更やグループIDの変更を実施してもid(1)コマンドの表示に反映されない場合、次のコマンドを実行してみてください。

sudo dscacheutil -flushcache
sudo dsmemberutil flushcache

今のところLionのデフォルトのツールを使って簡単にNFSv4サーバを利用する方法は提供されていないようです。大掛かりなユーザ管理が実施されている場合、専用の管理ツールを導入することになるようです。ユーザIDとグループIDを揃えればいいという程度であれば、ここで紹介した十分方法で利用できます。

おすすめ記事

記事・ニュース一覧