Friendly ArmのZeroPiでsambaを使ってファイルサーバを立てる【samba設定編】

# もくじ
- [購入品編](https://qiita.com/kineneticnamaco/items/a7875cfa0956d9688407)
- [個人輸入編](https://qiita.com/kineneticnamaco/items/df28c43e4eb83053312b)
- [OSインストール編](https://qiita.com/kineneticnamaco/items/261c6aac31ccd4c31b14)
- [samba設定編](https://qiita.com/kineneticnamaco/items/542d2bdf2a27fbd3de2e)　この記事

# はじめに

以下の記事の続き、最終回となります。
[Friendly ArmのZeroPiでsambaを使ってファイルサーバを立てる【OSインストール編】](https://qiita.com/kineneticnamaco/items/261c6aac31ccd4c31b14)

これにて最終回となります。

初期設定が終わっているZeroPiに、オープンソースのファイル共有サーバアプリであるSambaに入れてNASにします。
ここまでくればただのLinux、調べたらいくらでも出てくる内容です。

# 環境

ハード：FriendlyElec ZeroPi

```terminal
pi@ZeroPi:~$ uname -a
Linux ZeroPi 4.14.111 #3 SMP Thu Sep 5 18:29:22 CST 2019 armv7l armv7l armv7l GNU/Linux

pi@ZeroPi:~$ apt show samba
Package: samba
Version: 2:4.3.11+dfsg-0ubuntu0.16.04.24
～略～

pi@ZeroPi:~$ apt show ntfs-3g
Package: ntfs-3g
Version: 1:2015.3.14AR.1-1ubuntu0.3
～略～
```

# sambaのインストール

この辺りは何も考えずにたたいてきます。
upgradeあたりは打ってもいいかもですが。

```terminal
$sudo apt update
$sudo apt install samba
```

# 共有するHDDの設定

そもそも、WindowsにつけてあるHDDを取り外してNASにするということなので、
そのあたりの設定が必要です。

windowsの場合、HDDのフォーマットはNTFSになります。
そのままつないだだけでも使えないことはないですが、読み込みしかできません。

また、起動時に自動マウントしない（しない？）といった問題がありますのでその辺に対処していきます。

まず、ntfsのHDDに書き込みができるようにntfs-3gを入れます。

```terminal
$sudo apt install ntfs-3g
```

マウント先のディレクトリを作ります。

```terminal
$sudo mkdir /mnt/usbhdd
```

続いてマウントするHDDのUUIDを調べます。

```terminal
$ll /dev/disk/by-uuid/
```

"sd"なんとかにリンクされてるやつが（おそらく）HDDのUUIDです。
このIDを使えば一意にHDDを指定できます。
このIDに基づいてマウントの設定ファイルを編集します。

```terminal
$sudo nano /etc/fstab
```

以下内容を追記します。XXXがUUIDになります。

```
/dev/disk/by-uuid/XXX /mnt/usbhdd ntfs-3g defaults 0 0
```

fstabに基づいてmountします。

```terminal
$sudo mount -a
```

これでマウントされてるはずです。

```terminal
$ls /mnt/usbhdd
```

# sambaの設定

（Linuxのユーザ作成→）sambaアクセス用のユーザとして登録→誰がどこにアクセスするのか設定を記述する、という流れになります。


まずはlinuxのアカウント作成。
sambaでアクセス制御するユーザはlinuxにあるユーザに紐づきます。
そんなにアクセス制御しないでいいやって方は不要です。

adduserとuseraddがありますが、adduserを使うほうがよさそうです。
詳細はこの辺り。
https://qiita.com/amedama/items/f45677cd944c42cde839

ユーザ名は適当にいきます。
パスワードを設定して後は適当でいいです。

```terminal
pi@ZeroPi:~$ sudo adduser smbwrite
Adding user `smbwrite' ...
Adding new group `smbwrite' (1005) ...
Adding new user `smbwrite' (1005) with group `smbwrite' ...
Creating home directory `/home/smbwrite' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for smbwrite
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
```

sambaを使うユーザの登録。


```terminal
pi@ZeroPi:~$ sudo pdbedit -a smbwrite
new password:
retype new password:
Unix username:        smbwrite
NT username:
Account Flags:        [U          ]
User SID: 
Primary Group SID:
Full Name:
Home Directory:       \\zeropi\smbwrite
HomeDir Drive:
Logon Script:
Profile Path:         \\zeropi\smbwrite\profile
Domain:               ZEROPI
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Wed, 25 Dec 2019 10:52:15 UTC
Password can change:  Wed, 25 Dec 2019 10:52:15 UTC
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
```

アクセスの設定をします。

```terminal
$sudo nano /etc/samba/smb.conf
```

以下の内容を追記。
`smbwrite`だけが書き込み可能で、guestは読み込みのみにします。

```
[hoge]

   path = /mnt/usbhdd
   valid users = smbwrite, pi
   read only = yes
   write list = smbwrite
   guest ok = no
```


ちょっとはまりそうだったのでコメント。

sambaに限らずですが、アプリの設定方法はバージョンが変わるごとに変更になります。
設定のパラメータが変わるぐらいの時もあれば、設定に関与するコマンドが変わるケースもあります。

sambaの場合には、今回使ったのージョン4系において、ユーザ管理にpdbeditを使います。
その前はsmbpasswdを使っていたようです。

googleで検索すると、一定以上昔の記事はアーカイブされて検索結果に出なくなる仕様だった気がするので大きな事故はないと思いますが、
sambaとか９０年代からあるアプリだと、化石のような情報に基づいて設定させられて苦労するかもしれません。
調べたいアプリのバージョンだったりlinuxのディストリビューション（特にDebian系とかRedhat系とか）だったりは
よく見ながら情報を集めるほうがいいと思います。

# 起動

sambaのデーモンを有効化します。

```terminal
$sudo systemctl enable smbd
```


sambaのデーモンを起動します。

```terminal
$sudo systemctl start smbd
```

状態を確認します。
何かトラブってたらここにログがでるはずです。

```terminal
sudo systemctl status smbd
```

# sambaへアクセス

エクスプローラで、「&yen;&yen;zeropi」と打ってアクセス。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549274/d5a5636b-f3f4-51d4-89eb-2e75b6601fc5.png)

ユーザとパスワードを求められるので、先ほど設定したsambaのユーザアカウントでアクセスすればOKです。


# 終わりに

これにて第4回にも渡るシリーズ終了です。
わかりやすかったかというと自信はありませんが、最低限の情報はあるのかなと思います。
とにかく安いデバイスですので、気軽に買って試してみてください。

# 所感

m5stackが届いた、はよいじりたい。