メインコンテンツへスキップ

Sambaによるファイル共有サーバの構築

··2 分·
Linux Samba
Makoto Morinaga
著者
Makoto Morinaga
技術メモ、コーディング、環境構築のための個人ノート。
目次

写真や動画等の各種データなどをパソコンに保存していると、だんだんパソコンの容量が圧迫されたり、家族でデータを共有する際に一々パソコンを起動してUSBメモリでコピーをする等、手間がかかります。

そこで、今回はサーバをファイル共有サーバとして構築して、上記の問題を解決します。 ファイル共有サーバがあれば、データをすべてファイル共有サーバに保存してパソコンの容量を空けれますし、家族間・PC間でのデータの共有が容易になります。

ここでは、ファイル共有機能として、Linux、mac、 Windows システム間での利用できるSambaを使って構築します。

Sambaのインストール
#

サーバにて以下のコマンドでsambaをインストールします。

Terminal
# Arch Linux
sudo pacman -S samba

Sambaアクセス用ユーザの作成
#

Sambaにアクセスするためには、linuxユーザが必要となり、必要に応じてuseraddコマンドでユーザを作成します。 以下のコマンドで作成したlinuxユーザをSambaアクセス用ユーザとして登録します。

Terminal
sudo pdbedit -a mako
sudo pdbedit -a sato
sudo pdbedit -a taka

上記例では既にmako, sato, takaというlinuxユーザを作成した上でsambaアクセス用ユーザとして登録しています。

なお、ユーザー名はLinux環境と共有しますが、パスワードは共有しません。

Samba用ディレクトリの作成
#

Sambaで共有するデータの保存ディレクトリを作成する。今回は、個人だけで利用するディレクトリと複数のユーザで共有するディレクトリを作成する。

Samba用トップディレクトリの作成
#

sambaで利用するディレクトリのトップディレクトリを以下コマンドで作成します:

Terminal
sudo mkdir -p /data/share

個人用ディレクトリの作成
#

以下のコマンドで個人用ディレクトリを作成します。ここでは、mako、sato、takaユーザの3ユーザ用に作成します。

Terminal
sudo mkdir /data/share/personal
sudo mkdir /data/share/personal/mako
sudo mkdir /data/share/personal/sato
sudo mkdir /data/share/personal/taka
sudo chown mako:mako /data/share/personal/mako
sudo chown sato:sato /data/share/personal/sato
sudo chown taka:taka /data/share/personal/taka

共有ディレクトリの作成
#

以下のコマンドで共有ディレクトリを利用するユーザが所属するグループを作成して、ユーザをグループに追加します:

Terminal
sudo groupadd -g 2000 common
sudo gpasswd -a mako common
sudo gpasswd -a sato common
sudo gpasswd -a taka common

次に以下のコマンドで共有ディレクトリを作成します:

Terminal
sudo mkdir /data/share/common
sudo chown :common /data/share/common

さらに、以下のコマンドで共有ディレクトリにsetgidを設定します。 setgidをディレクトリに付与すると、そのディレクトリ以下に作成されるファイルやサブディレクトリの所有グループは、作成したユーザのプライマリグループではなく、ディレクトリの所有グループになります。

Terminal
sudo chmod g+s /data/share/common

smb.confの設定
#

以下のように/etc/samba/smb.confを作成する。

/etc/samba/smb.conf
[global]
   # SMB2以上のプロトコルに固定
   server min protocol = SMB2
   # windows文字コード追加
   dos charset = CP932
   # linux文字コード追加
   unix charset = UTF-8
   # printerのロード禁止
   load printers = no
   # Windowsのワークグループ名を指定
   workgroup = WORKGROUP

   server string = Samba Server
   server role = standalone server

   # LANのみのアクセスに制限。ここでは、192.168.10/24
   hosts allow = 192.168.10. 127.

   # log fileを指定
   log file = /var/log/samba/%m.log
   # log サイズ
   max log size = 500

   dns proxy = no

# 個人用ディレクトリ
[homes]
   comment = Home Directories
   path = /data/share/personal/%U
   browseable = no
   writable = yes

# 共有ディレクトリ
[common]
   path = /data/share/common
   # アクセス許可をするユーザを指定
   valid users = mako sato taka
   writable = yes
   create mode = 0770
   directory mode = 0770
   printable = no

Sambaサービスの起動と有効化
#

以下のコマンドで sambaサービスを起動します:

Terminal
sudo systemctl start smb.service

さらに、以下のコマンドで sambaサービスを起動時に有効します:

Terminal
sudo systemctl enable smb.service

Configuring iptables
#

ファイル共有サーバとしてLAN内に公開しますので、iptablesでTCP445番ポートへアクセスを許可します。

iptablesの具体的な設定方法は、iptablesの設定をご参照ください。

Example rule:

Terminal
iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 445 -j ACCEPT

Sambaの動作確認
#

今回は、MacのFinderの「サーバへ接続」機能で確認を行います。 Finderから「移動」>「サーバへ接続」を選択して、サーバのIPアドレスを入力します。 ユーザ名が聞かれますので、先ほど作成したユーザ名とパスワードを入力して、共有ディレクトリが表示されれば成功です。

関連記事

NSDとUnboundによる内部向けDNSサーバの構築
··2 分
Unbound Nsd Linux
iptablesの設定
··2 分
Linux Firewall Iptables
ntpd を用いたNTPサーバの構築
··1 分
Linux Ntp