Raspberry Pi 3 で 64bit の Raspberry Pi OS(Rasbian)を利用し、外付けハードディスクを Samba 共有で読み書きできないと悩むケースはよくあります。SD カード内部の共有は問題なく動作しているものの、外付け HDD ではパーミッションやマウント方法に原因があり、適切な手順を踏む必要があります。
外付けハードディスクを安定してマウントする
まず外付け HDD を正しくマウントすることが重要です。`/dev/sda1` のようなデバイス名ではなく、`blkid` コマンドで UUID を確認し、それを使って `/etc/fstab` にエントリを追加すると再起動後も安定してマウントできます。[参照]
具体例としては以下のようにします。
sudo mkdir -p /mnt/external_hddsudo blkid /dev/sda1sudo nano /etc/fstab
(例)UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/external_hdd ext4 defaults 0 2
このようにすることで、外付け HDD が Ryzen Pi 起動時にも一貫して同じ場所にマウントされ、その上の共有が可能になります。
マウントポイントとパーミッションの調整
ext4 のような Linux 標準ファイルシステムでは、マウント後に所有者と権限を適切に設定する必要があります。外付け領域の所有者を Samba ユーザーと一致させておくことで、ネットワーク経由の書き込み権限問題を避けられます。[参照]
例として:
sudo chown -R pi:pi /mnt/external_hddsudo chmod -R 775 /mnt/external_hdd
これにより、ローカル OS 上でも Samba 経由でもユーザー `pi`(もしくは別に作成したユーザー)で読み書きが可能になります。
Samba の設定とユーザー登録
Samba の設定ファイル `/etc/samba/smb.conf` に共有セクションを追加し、適切なユーザーを valid users に指定します。権限やマスクも 0777 などにしておくことで Mac や Windows からの読み書き動作が向上します。[参照]
一般的な設定例。
[external]path = /mnt/external_hddread only = nobrowseable = yesvalid users = picreate mask = 0777directory mask = 0777
Samba ユーザーを作成・パスワード設定するには次のコマンドを使います。
sudo smbpasswd -a pisudo systemctl restart smbd
Samba 共有がアクセス拒否になる一般的な原因
外付け HDD が ext4 形式であっても、Linux の所有者と Samba のユーザーが一致していないと書き込みができないケースが多いです。単に chmod するだけでは不十分なことがあり、fstab でマウント時に所有者を指定する方法や、Samba の設定で force user を使う方法も有効です。[参照]
また、guest 設定だけでは ext4 のパーミッションが有効にならずアクセスできないこともあります。この場合は `map to guest = bad user` のような global セクションの追加も検討してください。
まとめ:外付け HDD の Samba 書き込みを確実にするコマンド
まとめとして、外付け HDD を Samba で安定して書き込み可能にするための主なポイントは以下の通りです。
- UUID を使って `/etc/fstab` に安定してマウントする。
- マウント後に chown と chmod を使って所有者と権限を適切にする。
- Samba 設定ファイルで valid users・create mask・directory mask を設定する。
- Samba ユーザーを登録して接続する。
具体的なコマンド例は記事内で紹介した通りです。これらを実行することで、SD 内の共有はもちろん、外付け HDD への読み書きも他の PC から可能になります。


コメント