環境情報
- OS: Linux Mint 21.1
- ハードウェア: HP Z240 SFF Workstation
- Sambaの設定ファイルパス: /etc/samba/smb.conf
始めに試したこと
外付けHDDに権限を付与し、/etc/samba/smb.conf
で外付けHDDのパスを指定して、共有しようとするも失敗。
Chat-GPTと何時間も格闘するも、手がかりを得られなかったので、ネットで調べたところ、以下の記事を見つける。
この記事によると...
色々調べたり試してみたりした結果、1どうやらマウントされた後では、アクセス権限の変更は不可能のようです。
じゃあどのタイミングだったら変更可能なのか?
変更可能タイミング、それは「マウントする時」でした。
外付けHDDをPCに接続すると、ubuntuが自動的にマウントしてくれます。
ですがubuntuにマウントしてもらうと、全フォルダ・ファイルの所有者・所有グループは「ログイン中のユーザー」に、アクセス権限は「700(所有者:フルアクセス 所有グループ・その他:アクセスなし)」に設定されます。
ですので所有者情報やアクセス権限を自由に設定したい場合、ubuntuにマウントしてもらうのではなく、こちらでマウントしなければいけません。
さて、そのマウント方法ですが、マウント毎に端末起動してコマンド実行してマウント先設定してマウントさせる「手動マウント」と、予めマウントしてほしいデバイスを登録しておけば、PC起動時に登録されてあるデバイスを設定値でマウントしてくれる「自動マウント」があります。
毎回コマンド実行するのは面倒なので、「自動マウント」の方法を選択します。
といっても、途中まではどちらも同じ作業なんですけどね。
では改めて、マウント方法は以下のとおりです。(...)
ここには書いてありませんが、マウントポイントを自分で設定する必要があります。
上手く行った方法
まず、sambaから解説。飛ばしたい方はマウントしたい外付けドライブの確認
または、マウントポイントの作成と権限の付与へ
1.Sambaのインストールと起動
sudo apt-get install samba
sudo service smbd start
これでsambaがインストールされ、起動されます。
2. マウントしたい外付けドライブの確認
sudo fdisk -l
とうつ
自分はUSB3.0で接続しているので、/dev/sdb
が外付けドライブだとわかります。
補足
私の環境では、外付けHDDはUSB3.0ポートに接続されており、このHDDは/dev/sdb
として認識されています。しかし、あなた(読者)の環境では、外付けHDDが異なるデバイスファイル(例えば/dev/sdcや/dev/sdd
など)として認識されるかもしれません。これは、システムが接続されたストレージデバイスをどの順序で認識するかによります。したがって、sudo fdisk -l
コマンドを使用して、あなたの外付けHDDがどのデバイスファイルとして認識されているかを確認してください。
sudo blkid /dev/sdb
でUUIDを確認する。(後のetc/fstab
でデバイス名でマウントすると、上手く行かないことがあるため(自分の場合デバイス名で何故かできた))
こんな感じの出力結果になる。
このUUID(例: a3e...589)をメモして下さい。後で使います。
補足
補足: UUIDはUniversally Unique Identifier
の略で、各デバイスを一意に識別するためのIDです。これは後で/etc/fstab
ファイルに記述する際に必要となります。/etc/fstab
ファイルはシステム起動時にどのデバイスをどのようにマウントするかを指定するためのもので、UUIDを使用することで特定のデバイスを一意に指定することができます。
3. マウントポイントの作成と権限の付与
どこにマウントポイントを作成してもいいと思いますが、/mnt
に作成するのが一般的なようです。
sudo mkdir /mnt/usbhdd
*usbhdd
は適宜好きな名前に変えて下さい。
sudo chmod 777 /mnt/usbhdd
'mnt/usbhdd'に全権限を与えます(共有方法によって適宜権限を変えて下さい。)
4. Samba設定ファイル(/etc/samba/smb.confの編集
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を確認する。
id <ユーザー名>
このuid=xxxx
,gid=yyyy
をメモする。
etc/fstab
の編集する(自動マウント設定)
sudo vim etc/fstab
etc/fastab
に以下を追記する。
UUID=(先程メモしたUID(""で囲まない)) /mnt/usbhdd auto defaults,uid=1000,gid=1000, 0 0
6. PCを再起動する
PCの再起動後、
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
- 共有フォルダのパーミッションを確認します。以下のコマンドでパーミッションを確認し、必要に応じて設定を変更します。
ls -ld /mnt/usbhdd
-
Sambaのログを確認することで、問題の原因を特定することができます。ログは
/var/log/samba/
に保存されています。 -
再起動後grubが起動する ->
etc/fstab
を編集してみる
補足
再起動後、システムが正常に起動しない、またはgrubが起動する場合は、/etc/fstab
ファイルの設定を見直す必要があります。grubが起動するということは、システムが正常に起動できない何らかの問題が存在することを示しています。その一つの可能性として、/etc/fstab
ファイルに誤った設定がある場合があります。そのため、再起動後に問題が発生した場合は、/etc/fstab
ファイルを再度確認し、必要に応じて設定を修正してください。具体的には、先ほどメモしたUUIDが正しく記述されているか、マウントポイントが正しく設定されているかなどを確認します。
参考文献、参考になる記事
Ubuntu:増設したHDDをSambaで共有させる
ubuntuに接続した外付けHDDのアクセス権限が変更されない
How to make partitions mount at startup?
How to enable full permissions on internal secondly HDD?
最後に
本記事の文章はChat-GPT4により生成されたものを一部採用しています。
分からないことやご指摘がありましたら、コメントお願いします。
-
こちらについて英語でも調べましたが、ソースがわからなかったです。ソースが分かる方がいれば教えてください。調べたもの -> fastab-Community Help Wiki ↩