Ubuntu/DebianでSamba(ファイルサーバー)のインストールと設定

2016.5.2 (月)

ファイルサーバーは何だかんだでとても楽でいいです。2TB級のHDDが安価な世の中になったのでファイルサーバーは尚更便利な世の中になってきました。私は家族の写真とかそういうものを置くために作ってます。ローカルPCもとんでもない容量がある今現在ですが、みんなで使うサーバーとしてはLAN内に1つあるととても重宝します。

Sambaのインストール

# apt-get -y install samba

共有ディレクトリの作成
# mkdir /var/samba
# chown nobady:nogroup /var/samba
# chmod 777 /var/samba

設定ファイルの編集

vi /etc/samba/smb.conf

編集する項目はかなり少ないです。いわゆるワークグループを作成してWindowsやLinux(Mac)から接続できるようにします。ここではユーザーアカウントのない人もアアクセスできるように設定します。イントラネット内で家族向けだったらこれでいいでしょう。

[global]
# Windows charset
dos charset = CP932
# Linux charset
unix charset = UTF-8
# swat display charset
display charset = UTF-8
# Bad User (nouser)
map to guest = Bad User

それから設定ファイルの一番下辺りに共有ディレクトリの設定をしておきます。

[share]
path = /var/samba
writeable = yes
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes

設定は概ねこれだけで、後は再起動すればよいです。

service smbd restart

ここまでの設定でIPやホスト名、ドメインなどで接続すればOKです。しかしFWの設定やTCP/Wapperなどの設定をしている人はそれらのポートをSamba用に開放しないといけません。ufwを使うと簡単なので、Ubutu/Debianの人でこれを使わない手はないでしょう。詳しい設定方法はこちらから。
同じLAN内のすべてのPCからアクセスできるようにするには、以下みたいな感じ。

ufw allow from 192.168.1.0/24 to any app Samba

私はWifiなどからもアクセスするので自分のグローバルIPも許可しておきました。ufw statusコマンドで確認するとこんな感じ。

Samba ALLOW 121.xxx.xxx.xxx
Samba ALLOW 192.168.11.0/24

これでアクセスできると思います。NATとかそういう設定がある人もいるかと思いますが、ネットワークの話しになっちゃうのでここでは割愛。
ユーザー権限とパスワード
アクセス制限をするときは、アクセスできるアカウントユーザーを作成する必要があります。Linuxのシステムユーザーを予め作っておく必要があります。adduserなどで適当なユーザーを作成します。

# adduser hoge
# passwd hoge

sambaではこのアカウントをsambaユーザーとして登録する必要があります。(システムのユーザーが存在しない場合はそもそもsambaのユーザーも作成できないといった感じです。)なので、先ほど作成したユーザーをsambaユーザーとして登録します。ユーザー名はそういうことになっているのですが、パスワードは個別で設定可能です。pdbeditコマンドを使います。

# pdbedit -a hoge
password: xxxxxxxx

これでユーザーが登録されます。
登録されているアカウントの確認は

# pdbedit -L

削除するときは、

pdbedit -x hoge