[ubuntu]外付けHDDをsambaで共有する際に躓いたこと

# 環境情報
- OS: Linux Mint 21.1
- ハードウェア: HP Z240 SFF Workstation
- Sambaの設定ファイルパス: /etc/samba/smb.conf

# 始めに試したこと

外付けHDDに権限を付与し、`/etc/samba/smb.conf`で外付けHDDのパスを指定して、共有しようとするも失敗。
Chat-GPTと何時間も格闘するも、手がかりを得られなかったので、ネットで調べたところ、以下の記事を見つける。

http://hakushisky.blog.shinobi.jp/pc%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB/ubuntu%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%9F%E5%A4%96%E4%BB%98%E3%81%91hdd%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E9%99%90%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84

この記事によると...

> 色々調べたり試してみたりした結果、**[^1]どうやらマウントされた後では、アクセス権限の変更は不可能のようです。**
じゃあどのタイミングだったら変更可能なのか？
変更可能タイミング、それは「マウントする時」でした。
外付けHDDをPCに接続すると、ubuntuが自動的にマウントしてくれます。
ですがubuntuにマウントしてもらうと、全フォルダ・ファイルの所有者・所有グループは「ログイン中のユーザー」に、アクセス権限は「700（所有者：フルアクセス　所有グループ・その他：アクセスなし）」に設定されます。
ですので所有者情報やアクセス権限を自由に設定したい場合、ubuntuにマウントしてもらうのではなく、こちらでマウントしなければいけません。
さて、そのマウント方法ですが、マウント毎に端末起動してコマンド実行してマウント先設定してマウントさせる「手動マウント」と、予めマウントしてほしいデバイスを登録しておけば、PC起動時に登録されてあるデバイスを設定値でマウントしてくれる「自動マウント」があります。
毎回コマンド実行するのは面倒なので、「自動マウント」の方法を選択します。
といっても、途中まではどちらも同じ作業なんですけどね。
では改めて、マウント方法は以下のとおりです。(...)

ここには書いてありませんが、マウントポイントを自分で設定する必要があります。

# 上手く行った方法

まず、sambaから解説。飛ばしたい方は[マウントしたい外付けドライブの確認](#link-1)
または、[マウントポイントの作成と権限の付与](#link-2)へ

### 1.Sambaのインストールと起動

```bash
sudo apt-get install samba
sudo service smbd start
```
これでsambaがインストールされ、起動されます。

### 2. [マウントしたい外付けドライブの確認](#link-1)

```bash
sudo fdisk -l
```
とうつ

こんな感じの出力結果が出る。
![範囲を選択_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361032/e6daca8f-30be-df59-a5aa-32dcd6bd8d81.png)

自分はUSB3.0で接続しているので、`/dev/sdb`が外付けドライブだとわかります。
<details><summary>補足</summary>

私の環境では、外付けHDDはUSB3.0ポートに接続されており、このHDDは`/dev/sdb`として認識されています。しかし、あなた(読者)の環境では、外付けHDDが異なるデバイスファイル（例えば`/dev/sdcや/dev/sdd`など）として認識されるかもしれません。これは、システムが接続されたストレージデバイスをどの順序で認識するかによります。したがって、`sudo fdisk -l`コマンドを使用して、あなたの外付けHDDがどのデバイスファイルとして認識されているかを確認してください。

</details>


```bash
sudo blkid /dev/sdb
```
でUUIDを確認する。(後の`etc/fstab`でデバイス名でマウントすると、上手く行かないことがあるため(自分の場合デバイス名で何故かできた))

![範囲を選択_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361032/62175dc2-2934-0e11-66d7-926cdc532484.png)
こんな感じの出力結果になる。
このUUID(例: a3e...589)をメモして下さい。後で使います。

<details><summary>補足</summary>

補足: UUIDは`Universally Unique Identifier`の略で、各デバイスを一意に識別するためのIDです。これは後で`/etc/fstab`ファイルに記述する際に必要となります。`/etc/fstab`ファイルはシステム起動時にどのデバイスをどのようにマウントするかを指定するためのもので、UUIDを使用することで特定のデバイスを一意に指定することができます。

</details>

### 3. [マウントポイントの作成と権限の付与](#link-2)

どこにマウントポイントを作成してもいいと思いますが、`/mnt`に作成するのが一般的なようです。

```bash
sudo mkdir /mnt/usbhdd
```
*`usbhdd`は適宜好きな名前に変えて下さい。

```bash
sudo chmod 777 /mnt/usbhdd
```
'mnt/usbhdd'に全権限を与えます(共有方法によって適宜権限を変えて下さい。)

### 4. Samba設定ファイル(/etc/samba/smb.confの編集

```bash
sudo vim /etc/samba/smb.conf
```
*vimは適宜好きなエディタに変えて下さい。

ファイルの下の方に以下を追記して下さい。

```
[Share]
path = /mnt/usbhdd
available = yes
valid users = <ユーザー名>
read only = no
browsable = yes
public = yes
writable = yes
```

### 5. `etc/fstab`の編集

useridを確認する。
```bash
id <ユーザー名>
```
(例)![範囲を選択_009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3361032/5f0fcd1e-cba5-c2eb-b8d7-7a72ee869cdb.png)

この`uid=xxxx`,`gid=yyyy`をメモする。

`etc/fstab`の編集する(自動マウント設定)
```bash
sudo vim etc/fstab
```

`etc/fastab`に以下を追記する。
```
UUID=(先程メモしたUID(""で囲まない)) /mnt/usbhdd auto defaults,uid=1000,gid=1000, 0 0
```

### 6. PCを再起動する

PCの再起動後、
```bash
ls /mnt/usbhdd
```
でマウント出来ているか確認する。

# エラーと対処法など

- `netbios name`が長すぎる場合、Sambaが正常に動作しない可能性があります。`netbios name`はWindowsネットワーク上で見えるコンピューター名で、最大15文字までです。`/etc/samba/smb.conf`ファイルに記述されている`netbios name`を確認し、15文字を超えている場合は適切な長さに変更してください。
*`/etc/samba/smb.conf`の`[global]`セクションにあります。

- Sambaサービスが動作しているか確認するためには、以下のコマンドを実行します。

```
sudo service smbd status
```

- 共有フォルダのパーミッションを確認します。以下のコマンドでパーミッションを確認し、必要に応じて設定を変更します。

```bash
ls -ld /mnt/usbhdd
```

- Sambaのログを確認することで、問題の原因を特定することができます。ログは`/var/log/samba/`に保存されています。

- 再起動後grubが起動する -> `etc/fstab`を編集してみる

<details><summary>補足</summary>

再起動後、システムが正常に起動しない、またはgrubが起動する場合は、`/etc/fstab`ファイルの設定を見直す必要があります。grubが起動するということは、システムが正常に起動できない何らかの問題が存在することを示しています。その一つの可能性として、`/etc/fstab`ファイルに誤った設定がある場合があります。そのため、再起動後に問題が発生した場合は、`/etc/fstab`ファイルを再度確認し、必要に応じて設定を修正してください。具体的には、先ほどメモしたUUIDが正しく記述されているか、マウントポイントが正しく設定されているかなどを確認します。

</details>



# 参考文献、参考になる記事

Ubuntu：増設したHDDをSambaで共有させる 

https://torisky.com/ubuntu%ef%bc%9a%e5%a2%97%e8%a8%ad%e3%81%97%e3%81%9fhdd%e3%82%92samba%e3%81%a7%e5%85%b1%e6%9c%89%e3%81%95%e3%81%9b%e3%82%8b/

ubuntuに接続した外付けHDDのアクセス権限が変更されない 

http://hakushisky.blog.shinobi.jp/pc%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB/ubuntu%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%9F%E5%A4%96%E4%BB%98%E3%81%91hdd%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E9%99%90%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84

How to make partitions mount at startup?

https://askubuntu.com/questions/164926/how-to-make-partitions-mount-at-startup

How to enable full permissions on internal secondly HDD?

https://askubuntu.com/questions/1207427/how-to-enable-full-permissions-on-internal-secondary-hdd

# 最後に

本記事の文章はChat-GPT4により生成されたものを一部採用しています。
分からないことやご指摘がありましたら、コメントお願いします。

[^1]: こちらについて英語でも調べましたが、ソースがわからなかったです。ソースが分かる方がいれば教えてください。調べたもの -> [fastab-Community Help Wiki](https://help.ubuntu.com/community/Fstab)