2007/05/29

2007-05-29:vmware の中からホストの windows 上のファイルをいじる

現在わたしは普段持ち歩きの Let’s note R4 と会社のデスクトップで vmware を使っている。
R4 では VMware Workstation 5.5.4、デスクトップは VMware Server 1.0.2。
どちらも Windows XP SP2 がホストで、virtual machine の中身は Vine Linux 4。同じイメージを使い、適宜ファイルを virtual machine 同士で rsync して同期をとる運用。
R4 では Workstation を使っているので vmware-tools の vmhgfs モジュールを利用して、Windows 上に(vmware 上での)共有フォルダを作り、Windows からも virtual machine からもファイルを読み書きすることが可能。
しかしデスクトップで使っている Server では同じことができない。

さぁ、どうしよう。
まぁ、答えは Windows の共有フォルダと smbmount だよね、ということで Windows の共有フォルダ設定の話題。
前置きが長くてごめん。

Windows ではターゲットのフォルダを右クリックして「共有とセキュリティ」を押して「フォルダを共有する」を選んであげれば、簡単にそのフォルダを他から共有できる。
ただ、細かいアクセス制御をしたいよ!という向きにはこれだけではだめ。
今回は

同一ホストの vmware の中の子からだけアクセスを許可したい

ので、いくつか細かい設定をしなければいけない。

まず、てきとーなフォルダで「ツール→フォルダオプション」から表示タブの詳細設定の中の「簡易ファイルの共有を使用する(推奨)」のチェックをはずす。
続けて共有したいフォルダを作る。場所は適当。フォルダ名は英数のみにしたほうが無難かな。
作ったフォルダを右クリックして「共有とセキュリティ」を押します。

  • 「このフォルダを共有する」を選択。
  • 共有名はフォルダと同じ名前が無難でしょう。
  • ユーザー数制限は 3 くらいにしとけばいいかな。
  • アクセス許可を押す。
    • Everyone をさくっと削除。
    • 追加を押してユーザー名を入れて OK を押す。
    • アクセス許可を聞かれるので、すべて許可をチェック。
  • 「Windows ファイアウォールの設定を表示します。」を押す。
    • 「例外」タブの「ファイルとプリンタの共有」をはずす(これは油断すると復活するものらしい。新しく共有フォルダを増やしたら注意)。
    • vmware の Virtual Network がブリッジ接続の場合は VMnet1 を、NAT の場合は VMnet8 を選び「設定」を押す。
    • 「追加」で localhost に対して UDP137, UDP138, TCP139, TCP445 を開ける。外部ポート内部ポートをそれぞれ同一で設定した。

以上でアクセス制限系設定はおわり。

vmware の Guest からのマウントは通常の samba のマウントといっしょ。

% sudo mount -t smbfs \
    -o username=[Windowsユーザー名],uid=[Virtualmachine内UID],gid=[Virtualmachine内GID], \
       rw,fmask=644,dmask=775 \
    //[Windowsアドレス]/[共有フォルダ名] [Virtualmachine内マウント先]

sudo のパスワードと、Windows でのパスワードを打ってマウント完了。