Windows上にNFSサーバーを構築する

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は、以下のサイトからダウンロードできる。

Windows Services for UNIX

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マウントは、昔から一筋縄ではいかないようで……。