UbuntuにSambaをインストール

目次

Windows と Ubuntu マシン間でファイルを交換するために、Ubuntu マシンに Samba をインストールしました。1Gbps のネットワークならば、ローカルドライブ並みの速さでファイルの移動やアクセスができるようになりました。

Ubuntu は、Windows で使用している USB メモリを挿すと自動的に/media/user_name 以下にマウントされます。昔のようにデバイス名を確認してmountコマンドを入力する必要がなく、Windows マシンと同じ感覚で使用できます。

そのため Widwos マシンとのファイル交換が少ない内は、USB メモリーにコピーしてやり取りしても大した手間ではありません。しかし多数のファイルや容量の大きなファイルを移そうとすると、ファイルのコピーに時間がかかり待ち時間がもったいなく思えます。

そこで Windows と Ubuntu マシン間でファイルを簡単にやり取りできるようにするため、Ubuntu に Samba をインストールしました。これで一回の操作でファイルを移動でき、速さも 1Gbps のネットワークで繋がれたマシン間ではローカルドライブ並みです。

Samba のインストール方法

Ubuntu のパッケージを使用して Samba をインストールします。

$ sudo apt-get update
$ sudo apt-get install samba

Samba の設定

Samba の設定は、/etc/samba/smb.confファイルを編集します。

最近の Samab4 は、ActiveDirectory の機能など非常に高機能になっています。しかしただのファイルサーバとして使用するには、設定は非常に簡単です。

パッケージをインストールした時の設定ファイルとの差分は以下のようになります。

--- smb.conf.bak	2016-05-05 12:25:56.638219192 +0900
+++ smb.conf	2016-05-06 08:08:23.171354734 +0900
@@ -185,18 +185,25 @@
 # public shares, not just authenticated ones
    usershare allow guests = yes

+### charset ###
+
+   dos charset = CP932
+   unix charset = UTF-8
+
 #======================= Share Definitions =======================

 # Un-comment the following (and tweak the other settings below to suit)
 # to enable the default home directory shares. This will share each
 # user's home directory as \\server\username
-;[homes]
-;   comment = Home Directories
-;   browseable = no
+[homes]
+   comment = Home Directories
+   browseable = no
+   path = %H/smbdir

 # By default, the home directories are exported read-only. Change the
 # next parameter to 'no' if you want to be able to write to them.
 ;   read only = yes
+   read only = no

 # File creation mask is set to 0700 for security reasons. If you want to
 # create files with group=rw permissions, set next parameter to 0775.
@@ -211,7 +218,7 @@
 # Un-comment the following parameter to make sure that only "username"
 # can connect to \\server\username
 # This might need tweaking when using external authentication schemes
-;   valid users = %S
+   valid users = %S

 # Un-comment the following and create the netlogon directory for Domain Logons
 # (you need to configure Samba to act as a domain controller too.)

dos charsetunix charsetで、ファイル名に使う文字コードを設定します。ここでは、Ubuntu 側では UTF-8 を使用し、Windows には標準の CP932(Shift_JIS)に見えるようにしています。

全てのユーザで同じフォルダ(ディレクトリ)を共有するのではなく、ユーザごとに自分のホームディレクトリにアクセスするために[home]ディレクティブを有効にします。

pathでアクセスできるディレクトリーを~/smbdir以下に限定します。これは、Ubuntu マシンの個人設定ファイルを変更・削除したりという間違いを起こさないようにするためです。

read onlynoにすることで、読み込み専用ではなく書き込みもできるようにします。

valid usersは、ディレクトリ(ここでは自分のホームディレクトリ)にアクセスできるユーザを限定するための指定です。今回はホームディレクトリ内なので、自分自身に限定するために%S(自分のユーザ名に置き換えられる変数)を指定しています。ユーザ名を列挙すると、他のユーザもアクセスできるようになります。また@groupと指定することで、特定の Ubuntu グループに属するユーザ全員にアクセスを許可することも可能です。

Samba の再起動

Samba の設定を変更したら、testparmコマンドで問題がないことを確認してから Samba プログラムを再起動します。

$ sudo testparm
$ sudo /etc/init.d/samba restart

ユーザ登録

Windows からアクセスできるディレクトリを指定したので、そのディレクトリを作成しておきます。

次にpdbeditコマンド(注1)でユーザ登録を行います。ユーザ登録時に Samba に接続するパスワードを聞かれますが、このパスワードは、Ubuntu マシンにログインするパスワードとは別の文字列を指定することが可能です。

$ sudo mkdir ~user_name/smbdir
$ sudo chown user_name:user_group ~user_name/smbdir
$ sudo chmod 700 # アクセス設定

$ sudo pdedit -a user_name

トラブルシューティング

複数の Windows マシン間で同じファイルを編集する時にファイルが壊れる問題が起きる場合は、ロック機構の設定を変更する必要があります。 Locks and Oplocks

参照と脚注

  1. 以前はユーザ登録にsmbpasswdコマンドを使用していましたが、現在は、pdbeditコマンドの使用が推奨されています。