複数のユーザーで同じフォルダに書き込み(編集・追加)を行えるようにする場合、Sambaの設定(smb.conf)にユーザーを追加するだけでは不十分で、「Ubuntu OS側のファイルアクセス権限(パーミッション)」も併せて調整する必要があります。
(Aさんが作ったファイルをBさんが編集しようとした時に「アクセス拒否」されるのを防ぐためです。)
最も管理しやすく、トラブルが起きにくい「共有用のグループを作成して管理する方法」をステップ・バイ・ステップで解説します。
ステップ 1:共有用グループの作成
まず、Samba共有にアクセスするユーザーをまとめるためのグループ(ここでは smbshare とします)を作成します。
sudo groupadd smbshare
ステップ 2:既存ユーザーと新ユーザーのグループ追加
ご自身のユーザーと、新しく追加したいユーザーをこのグループに参加させます。
1. ご自身のユーザーをグループに追加する
sudo usermod -aG smbshare $USER
2. 新しいユーザーを作成し、Samba用パスワードを設定する
(※このユーザーはファイル共有専用とし、セキュリティのためUbuntu自体へのSSHログイン等はできないように設定します)
# ユーザーを作成(-M: ホームディレクトリを作らない, -s: ログインを禁止)
sudo useradd -M -s /sbin/nologin 新しいユーザー名
# 作成したユーザーを共有グループに追加
sudo usermod -aG smbshare 新しいユーザー名
# そのユーザーのSamba用パスワードを設定(2回入力を求められます)
sudo smbpasswd -a 新しいユーザー名
※ユーザーをさらに増やしたい場合は、この「2. 新しいユーザーを作成〜」の手順を繰り返すだけでOKです。
ステップ 3:共有フォルダの権限(パーミッション)変更
対象のディレクトリを、先ほど作った smbshare グループが自由に読み書きできるように変更します。
# ディレクトリの「グループ」を smbshare に変更
sudo chgrp -R smbshare /srv/samba/share
# グループに書き込み権限を付与(重要: '2' はSGIDという特殊な権限です)
sudo chmod -R 2775 /srv/samba/share
💡 TIPS:
2775の頭の2(SGID)を設定しておくことで、今後誰がこのフォルダ内に新しいファイルを作っても、ファイルの所有グループが自動的にsmbshareになります。これがないと、他人のファイルを編集できなくなってしまいます。
ステップ 4:Sambaの設定ファイル(smb.conf)の修正
設定ファイルを開き、グループでアクセスできるように書き換えます。
sudo nano /etc/samba/smb.conf
一番下の [MyShare] の項目を、以下のように変更・追記してください。
[MyShare]
comment = Private File Share
path = /srv/samba/share
read only = no
browsable = yes
# 変更: 個別のユーザー名ではなく、@をつけてグループ名にする
valid users = @smbshare
# 追記: ファイル作成時の権限を強制的にグループ共有設定にする
force group = smbshare
create mask = 0664
directory mask = 2775
@smbshareと記述することで、「このグループに属している人は全員アクセスOK」という意味になります。
- 下3行(
force group以降)は、Windowsなどから新しくフォルダやファイルを作った際に、正しい権限が割り当てられるようにするためのおまじないです。
書き換えたら Ctrl + O → Enter で保存し、Ctrl + X で閉じます。
ステップ 5:Sambaの再起動
設定を反映させるためにSambaを再起動します。
sudo systemctl restart smbd
これで設定は完了です。
新しく追加したユーザー名とSambaパスワードを使って、別のPCからアクセスし、ファイルの作成や編集ができるかテストしてみてください。