WindowsとLinuxとの間でファイルを共有したいと思った場合、LinuxにSambaを導入してLinux上に共有フォルダを作成するか、Sambaに含まれているsmbmountコマンドでWindows上の共有フォルダにアクセスする方法がある。
また、samba-clientパッケージを導入すれば、mountコマンドでWindows上の共有フォルダにアクセスするという方法もある。
しかし、今回は、LinuxにSambaやsamba-clientなどのパッケージをせずにWindows上にNFSサーバーを構築することでファイル共有してみた。
今回、Windows上にNFSサーバーを構築する際に使用したのは、Windows Services for UNIX(以降、SFU)というソフト。
cygwinやMinGWのようにWindows上にUNIXライクな環境を提供してくれるソフトである。調べてみると、2004年に無償化された模様。
SFUの機能や詳細については、以下のリンク先を参照。
【特集】マイクロソフトSFU vs Cygwin – Windows上のUNIX互換環境を徹底比較(1) マイクロソフトの提供するUNIX互換環境SFU (マイコミジャーナル)
@IT:製品レビュー:企業ユーザーのためのSFU 3.5活用ガイダンス 第1回 SFU 3.5の概要とNFS機能
SFUは、以下のサイトからダウンロードできる。
SFUのインストールは、インストールウィザードに従いながら途中でカスタムインストールを選択。
コンポーネントの選択では、今回はNFSサーバーの構築が目的なので、
- NFSクライアント
- NFSサーバー
- ユーザー名マッピング
- NFS認証サーバー
のインストールをオンにし、それ以外はオフに設定。
その後のユーザー名マッピングの項目では、[ローカルユーザー名マッピングサーバー(L)]の[パスワードおよびグループファイル]を選択。
次の画面でパスワードファイルとグループファイルの名前とパスを聞かれるが、後からでも設定できるので、ここでは何も設定せずに次へ。
あとはインストール先を設定すればインストール完了。
再起動を促されるので、指示に従ってPCを再起動。
再起動後、「Services for UNIX の管理」を起動して、各種項目を設定していく。
「NFSサーバー -> クライアントグループ」で、クライアントPCを登録。
「ユーザー名マッピング -> 構成」では、インストール時に設定を省略したパスワードファイルとグループファイルを設定する。
パスワードファイルとグループファイルの内容は、クライアントとなるLinuxのパスワードファイル(/etc/passwd)とグループファイル(/etc/group)をそのままコピーしてくるだけ。
何らかの理由でコピーできない場合は、とりあえず管理者(root)や管理者用一般ユーザーの行だけを抜き出して、テキストエディタで保存すればいい。
grep '^root\|emanon' /etc/passwd
grep '^root\|emanon' /etc/group
「ユーザー名マッピング -> マップ」では、WindowsユーザーとUNIXユーザーのユーザーの紐付けを行なう。
以上まで設定できたら、次は共有フォルダの設定。
SFUをインストールすると、フォルダのプロパティに「NFS 共有」というタブが表示されるようになる。
ここで共有したいフォルダを選択し、[このフォルダを共有する]をオンにして、共有名とエンコードを設定する。
続いて、[アクセス権(P)]をクリックして、適宜アクセス権を設定する。
NFS共有の設定は、ここまで。
最後に、NFS共有がきちんとできるかどうかテスト。NFS共有フォルダ(d:/share/)には、以下のようなテキストファイルを用意してみた。
さて、クライアント(Linux)からマウントしてみよう。
マウントできました。
けれどもただ一つ、欠点が……。
Windows上のNFSサーバーをマウントする際、クライアントPCと接続しているローカルエリア接続の「Windowsファイアウォール」を無効にしなければならないということ。
この点については、CygwinでNFSサーバーを構築しても同様なのだけれども……。
一応、マイクロソフト サポート オンラインの「UNIX 3. 5 の Windows サービスにアクセスできるようにする」を参考にポートを開放してみたけれども、設定をミスったのかマウントすることができなかった。
LinuxのNFSサーバーのように、ある程度開放するポートを固定できないかなぁ。
まあ、ファイアウォールを越えてのNFSマウントは、昔から一筋縄ではいかないようで……。
