公開日: 2021年7月4日

Samba を使って Windows とファイルを共有する

Samba を使用すると Windows パソコンとの間でディレクトリやファイルを共有することができるようになります。ほかにもプリンタの共有などができますが、この記事ではあまり凝ったことはせず、単純に Windows とのファイル共有に内容を絞ります。VMware Player でホストとゲストの間でファイルをやり取りするのにも使えます。

概要

FreeBSD 側が Samba サーバー、Windows 側が Samba クライアントになります。共有するディレクトリの本体は FreeBSD 側に作成し、所有するユーザーとアクセス権限を決め、Windows 側からアクセスする場合はそのユーザーとしてパスワード認証が必要となるように設定します。以前はゲストユーザーとしてパスワード入力が不要な設定が可能だったのですが、とある時期から Windows 10 での共有フォルダへのアクセスが厳しくなったらしく(?)いろいろ試してもそのような設定ができなかったので、ここは素直に従いたいと思います。

サーバー側 (FreeBSD) の設定

まずは packages を使用して Samba をインストールします。pkg search して Samba4 系の最新版を探してインストールしましょう。
# 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
/etc/rc.conf に次の 1 行を追加して、OS 起動時に Samba サーバーが起動するようにしておきます。
/etc/rc.conf
samba_server_enable="YES"
共有するディレクトリを作成し、所有者とアクセス権限を設定します。下の例では共有ディレクトリを /home/share とし、所有者を mijinco (システムに登録されている一般ユーザー)、アクセス権限は、所有者と wheel グループに読み・書き・実行を許可としてあります。
# 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
下記の内容で /usr/local/etc/smb4.conf を新規作成します。
/usr/local/etc/smb4.conf
[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" のどちらかだけ書いておけばよかった気がする。
smb.conf の記述を極めたい方は smb.conf(5) のマニュアルを見てください。
さて、mijinco はシステムのユーザーとしては登録されていますが、それだけでは駄目で、Samba ユーザーとして登録しパスワードを設定する必要があります。これには pdbedit コマンドを使用します。
# pdbedit -a -u mijinco
new password: (パスワード入力)
retype new password: (パスワード再入力)
...
# pdbedit -L
mijinco:1002:Mijinco
オプションの意味は、"-a" がユーザー追加、"-u" が追加するユーザーの名前です。また、"-L" で登録されているユーザーの一覧を表示します。登録したユーザーをやっぱり削除したいという場合は "-a" の代わりに "-x" を使用し、"-u" で削除したいユーザーを指定します。
それでは満を持して Samba サーバーを起動します。
# /usr/local/etc/rc.d/samba_server start
コマンドオプションは "start" のほかに、ステータス表示する "status"、サーバーを再起動させる "restart"、停止させる "stop" などがあります。
最後に、ifconfig コマンドでこのマシンの IP アドレスを確認しておきます。あとで Windows からアクセスするのに必要になります。環境によって異なりますが、下の例では 192.168.52.128 とわかります。
% ifconfig -a
em0: ...
inet 192.168.52.128 netmask 0xffffff00 broadcast 192.168.52.255
...

クライアント側 (Windows) の設定

ワークグループ名を smb4.conf に設定したものと同じものにしてください。たいていはデフォルトの "WORKGROUP" になっていると思います。[コントロールパネル] > [システム] から変更することもできます。その他は特に設定することはありません。共有フォルダにアクセスするには、エクスプローラのアドレスバーに、"\\<Samba サーバーの IP アドレス>\<共有ディレクトリ名>" と入力します。前の節で設定した例であれば "\\192.168.52.128\share" です (図 1)。その際、図 2 のようにネットワーク資格情報の入力画面が表示されますので、Samba サーバー側の pdbedit コマンドで登録したユーザー名とパスワードを入力します (初回のみでいいようです)。
図 1
図 1
図 2
図 2