リモートワークで使えるRaspberry Piで作るファイル共有サーバ

# はじめに
本記事はRaspberry Piを使用し、家庭内でファイル共有サーバを構築する方法について記載しています。

リモートワークを行うために会社からWindowsのPCが配付されたとします。
デザイナーを例にすると、会社から配付されたWindowsにあるデータを自宅のMacにコピーして作業したい場合は、ファイル共有を行う手段として何らかの方法が必要になります。

Dropbox等オンラインストレージサービスでファイル共有を行うこともできますが、そんなときに便利なのが自宅で使えるファイル共有サーバです。

Raspberry Piに**Samba**を導入し、ファイル共有サーバを構築することでWindowsやMacなどで簡単にファイル共有ができます。

![Samba.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/70a05561-5297-ceaa-548f-9fca668d6829.png)

## SMB
**SMB（Server Message Block）**は、Windowsコンピュータの間でファイル共有やプリンタ共有などを行うためのプロトコルです。

下位のプロトコルとして**NetBIOS**を使用します。また、SMBを拡張した**CIFS**というプロトコルも存在します。CIFSは直接、TCP/IPを利用します。

## Sambaの構築
- Sambaのインストール   
`$ sudo apt-get install samba samba-common-bin`
- 共有フォルダの作成   
`$ sudo mkdir /var/samba`  
- 共有フォルダへアクセスするユーザの作成   
`$ sudo useradd smbuser`
- パスワードの設定   
`$ sudo passwd smbuser`
- 権限変更   
`$ sudo chown smbuser:smbuser /var/samba/`
- Sambaのアクセス設定   
`$ sudo pdbedit -a smbuser`
- 共有フォルダの公開設定   
`$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org`    
`$ sudo vi /etc/samba/smb.conf`
 
`/etc/samba/smb.conf`ファイルに以下を追記する。

```conf
[share]
   comment = Share Folder
   browseable = yes
   path = /var/samba
   writable = yes
   valid users = smbuser
   force user = smbuser
```

- Sambaの再起動   
`$ sudo /etc/init.d/samba restart`

### pdbedit
pdbeditコマンドは、SAM データベース (Samba ユーザーのデータベース) を管理します。
SAM データベース内に保持されるユーザーアカウントを管理するために利用され、 root だけが実行できます。

pdbeditを使用することで、ユーザーアカウントの追加、ユーザーアカウントの削除 、ユーザーアカウントの変更、ユーザーアカウントの一覧表示、ユーザーアカウントのインポートの操作が行えます。


- データベースのユーザーアカウントを一覧表示   
`$ sudo pdbedit -L`

```console
smbuser:1001:
```

- データベースのユーザーアカウントを一覧表示（詳細）   
`$ sudo pdbedit -L -v`

```console
---------------
Unix username:        smbuser
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-1950213270-485466186-3954191822-1000
Primary Group SID:    S-1-5-21-1950213270-485466186-3954191822-513
Full Name:            
Home Directory:       \\raspberrypi01\smbuser
HomeDir Drive:        
Logon Script:         
Profile Path:         \\raspberrypi01\smbuser\profile
Domain:               RASPBERRYPI01
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    水, 25  3月 2020 15:11:40 JST
Password can change:  水, 25  3月 2020 15:11:40 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
```

## ファイル共有サーバのアクセス
Raspberry Pi側でファイアウォールを有効にしている場合は、Sambaで使用する通信が許可されていることを前提とし、WindowsとMacそれぞれのアクセス方法について記載しています。

### Windows
Windows10でSambaにアクセスするためには、SMBのクライアントが必要になります。
Windows 10の場合はSMB 1.0 が無効になっているため、以下の手順でSMBのクライアントを有効にします。

1. コントロールパネルを開く
2. プログラムから、［Windows の機能の有効化または無効化］を開く
3. ［SMB 1.0/CIFS クライアント］をチェックを入れて、[OK]をクリックする。
4. SMBのクライアントを有効化後、エクスプローラーからネットワークで、`¥¥＜Raspberry PiのIPアドレス＞:¥share¥`にアクセスする。
5. 先ほど作成したsmbuserの認証情報を入力するとファイル共有サーバにアクセスできる。

### Mac
Macの場合はFinderからアクセスします。

1. Finderの[移動]から、[サーバへ接続]を選択する。
2. [サーバアドレス]に`smb://<Raspberry PiのIPアドレス>`を入力し、[接続]をクリックする。
3. 登録ユーザを選択し、先ほど作成したsmbuserの認証情報を入力するとファイル共有サーバにアクセスできる。

# おわりに
Raspberry Piを有効活用し、リモートワークに役立てましょう。