Samba を使って Windows とファイルを共有する
概要
サーバー側 (FreeBSD) の設定
# pkg search samba
...
samba411-4.11.15 Free SMB/CIFS and AD/DC server and client for Unix
samba412-4.12.9_1 Free SMB/CIFS and AD/DC server and client for Unix
samba413-4.13.1_1 Free SMB/CIFS and AD/DC server and client for Unix
# pkg install -y samba413
samba_server_enable="YES"
# mkdir /home/share
# chown mijinco:wheel /home/share
# chmod -R 0770 /home/share
# ls -la /home/ | grep share
drwxrwx--- 2 mijinco wheel 512 Jan 23 17:08 share
[global]
dos charset = CP932
unix charset = UTF-8
workgroup = WORKGROUP
server string = FreeBSD
netbios name = freebsd
security = user
[share]
path = /home/share
create mask = 0770
directory mask = 0770
guest only = No
guest ok = No
browseable = No
read only = No
writable = Yes
2行目: | Windows クライアントとの通信に使用する文字コードを指定する。 |
3行目: | Samba サーバー側の FreeBSD マシンで使われる文字コードを指定する。 |
4行目: | Windows 側で設定したワークグループ名に合わせる。 |
5,6行目: | 適当に決める。 |
10行目: | 共有するディレクトリのパス。 |
11,12行目: | 共有ディレクトリに作成されるファイル/ディレクトリのパーミッションに適用されるビットマスク。「0770」にすると、所有者 (上の例では mijinco) とグループに所属するユーザには読み・書き・実行を許可する。 |
13,14行目: | ゲストユーザーは門前払いする。 |
15行目: | 何だっけ? |
16,17行目: | この共有ディレクトリを書き込み可能にする設定。"read only = No" か "writable = Yes" のどちらかだけ書いておけばよかった気がする。 |
さて、mijinco はシステムのユーザーとしては登録されていますが、それだけでは駄目で、Samba ユーザーとして登録しパスワードを設定する必要があります。これには pdbedit コマンドを使用します。
# pdbedit -a -u mijinco
new password: (パスワード入力)
retype new password: (パスワード再入力)
...
# pdbedit -L
mijinco:1002:Mijinco
それでは満を持して Samba サーバーを起動します。
# /usr/local/etc/rc.d/samba_server start
最後に、ifconfig コマンドでこのマシンの IP アドレスを確認しておきます。あとで Windows からアクセスするのに必要になります。環境によって異なりますが、下の例では 192.168.52.128 とわかります。
% ifconfig -a
em0: ...
inet 192.168.52.128 netmask 0xffffff00 broadcast 192.168.52.255
...
クライアント側 (Windows) の設定
追記: VMware Player を使う場合
ホストオンリー接続を使う
VMware Player のゲスト OS とホスト OS の間だけで通信をしたいときは、既存のネットワークアダプタとは別にもう 1 個ネットワークアダプタを追加して「ホストオンリー」接続を選ぶやり方がよいようです。情報源:
現状のゲスト OS 側 (FreeBSD) の NIC を確認すると、動作しているのは em0 とループバック・デバイス (lo0) のみです。
% ifconfig -a
em0: ...
inet 192.168.162.133 netmask 0xffffff00 broadcast 192.168.162.255
...
lo0: ...
ゲスト OS 側をシャットダウンして、次の手順でネットワークアダプタを追加します。
- VMware Player のメイン画面で仮想マシンを選択し、[仮想マシン設定の編集] をクリックする。
- [ハードウェア] タブの下のほうにある [追加] をクリックする (図 3(a))。
- ハードウェア追加ウィザードにて [ネットワークアダプタ] を選択し、[完了] をクリックする (図 3(b))。
- [ハードウェア] タブに戻ると [ネットワークアダプタ 2] が追加されている。これを選択し、[ホストオンリー] を選択して [詳細] をクリックする (図 3(c))。
- [ネットワークアダプタの詳細設定] ダイアログの [MAC アドレス] 欄で [生成] をクリックする (図 3(d))。
- 仮想マシン設定画面を閉じる。
再度 ゲスト OS を起動して先ほどと同様に確認すると、em1 が追加されていました。
% ifconfig -a
em0: ...
inet 192.168.162.133 netmask 0xffffff00 broadcast 192.168.162.255
...
em1: ...
inet 192.168.101.128 netmask 0xffffff00 broadcast 192.168.101.255
...
lo0: ...
これで新しく追加された em1 の IP アドレスにホスト側から接続することができます。この例の場合は、上のほうで作った /home/share ディレクトリに「\\192.168.101.128\share」でアクセスすることができます。
基本的にはこれでいいんですが、この IP アドレスは VMware の仮想 DHCP が割り当てたものなので、場合によってころころ変わるかもしれず、なにかと不都合です。そこで、次の節では IP アドレスが固定されるように設定してみます。
ゲスト側の IP アドレスを固定する
まず、VMware の仮想 DHCP が割り当てる IP アドレスの範囲を調べます。これはホスト側 (Windows) の C:\ProgramData\VMware\vmnetdhcp.conf を見るとわかります。VMnet1 というのがホストオンリー接続に使用されるネットワークアダプタなので、そのあたりに注目して読むようにします。
...
# Virtual ethernet segment 1
# Added at 04/25/23 07:46:30
subnet 192.168.101.0 netmask 255.255.255.0 {
range 192.168.101.128 192.168.101.254; # default allows up to 125 VM's
...
}
...
サブネットは 192.168.101.0、ネットマスクは 255.255.255.0、割り当てられる IP アドレスの範囲は 192.168.101.128 ~ 192.168.101.254 であることがわかります。そこで、ゲスト OS (FreeBSD) 側のアダプタ em1 に 192.168.101.128 を手動で割り当てることにします。
/etc/rc.conf に追加。
ifconfig_em1="inet 192.168.101.128 netmask 255.255.255.0"
ネットワークを再起動します。
# service netif restart
これで、いつも変わらず「\\192.168.101.128\share」で 共有ディレクトリにアクセスできるようになったはずです。