ファイル共有サーバの構築

この記事では、ファイル共有サーバの構築方法を紹介します。

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

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

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

なお、今回はArchLinuxにおけるsambaの設定になります。

1.sambaのインストール

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

$ sudo pacman -S samba

2.sambaアクセス用ユーザの作成

sambaにアクセスするためには、linuxユーザが必要となります。必要に応じてuseraddコマンドでユーザを作成します。
以下のコマンドで作成したlinuxユーザをsambaアクセス用ユーザとして登録します。
以下例では既にmako, sato, takaというlinuxユーザを作成した上でsambaアクセス用ユーザとして登録しています。

$ sudo pdbedit -a mako
$ sudo pdbedit -a sato
$ sudo pdbedit -a taka

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

3.samba用ディレクトリの作成

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

3-1.samba用ディレクトリの作成

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

$ sudo mkdir -p /data/share

3-2.個人用ディレクトリの作成

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

$ 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

3-3.共有ディレクトリの作成

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

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

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

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

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

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

4.samba.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

5.sambaサービスの起動と有効化

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

$ sudo systemctl start smb.service

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

$ sudo systemctl enable smb.service

6.iptablesの設定

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

iptablesの具体的な設定方法は、以下の関連記事を参照ください。

関連記事→iptablesの設定

# LAN(192.168.10.0/24)からTCP445番ポートへのアクセス許可
iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 445 -j ACCEPT

7.sambaの動作確認

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

終わりに

今回はファイル共有サーバの構築を紹介しました。これで、写真や動画データをすべてファイル共有サーバに保存してパソコンの容量を空けれますし、家族間、PC間でのデータの共有が容易になります。