次のような多くのフォルダを含むSamba共有があります。
share
- folderA
- folderB
- folderC
- folderD
これらの共有にアクセスするユーザーは約20人です。たとえば、BenはfolderAとfolderCにアクセスできますが、folderBとfolderDにはアクセスできません。 JennyはfolderBやfolderCなどにアクセスできます。
ユーザーに必要な各フォルダをマウントさせたくありません。すべてのサブフォルダを含む「共有」フォルダをマウントしてもらいたい。その後、Linux権限を設定することでアクセスが制限されます。
サブディレクトリごとにグループを作成し、それらのグループにユーザーを追加しました。アクセス制御は既存のファイルに対して完全に機能します。ただし、ユーザーがサブディレクトリにファイルを作成すると、そのディレクトリでの読み取り/書き込みアクセス権を持つ他のすべてのユーザーは拒否されます。これを解決するために、サンバマスキングをいじってみましたが、機能しません。
私のSamba confは次のようになります。
guest ok = no
[global]
workgroup = WORKGROUP
security = user
encrypt passwords = yes
[Share]
path = /var/samba
valid users = @everybody
read only = no
writeable = yes
[folderA]
path = /var/samba/folderA
valid users = @users_folderA
read only = no
writeable = yes
create mask = 770
directory mask = 770
force directory mode = 770
force group = users_folderA
[folderB]
path = /var/samba/folderB
valid users = @users_folderB
read only = no
writeable = yes
create mask = 770
directory mask = 770
force directory mode = 770
force group = users_folderB
[folderC]
path = /var/samba/folderC
valid users = @users_folderC
read only = no
writeable = yes
create mask = 770
directory mask = 770
force directory mode = 770
force group = users_folderC
[folderD]
path = /var/samba/folderD
valid users = @users_folderD
read only = no
writeable = yes
create mask = 770
directory mask = 770
force directory mode = 770
force group = users_folderD
したがって、明らかにすべてのユーザーがグループ全員に属しているため、サブディレクトリを使用して共有をマウントできます。各サブディレクトリへのアクセスは完璧に機能しています。ただし、BenがfolderCにファイルを作成するときはいつでも、ファイルはファイル権限-rwxr--r--を取得しますが、-rwxrwx ---である必要があります
それをテストするために書き込み可能=いいえおよび読み取り専用=はいに設定しようとしたので、個々のフォルダーの共有はまったく機能しないと思います。 smbdとnmbdを再起動し、ネットワーク共有を再マウントしました(Windows 10の場合)。ユーザーはファイルを作成し、自分のファイルを変更することができました。
これは、raspbianを使用したRaspberry Piで実行されます。ファイルを含むハードドライブはext4としてフォーマットされ、fstab経由でマウントされます。
この構成を試してください(共有セクションの場合):
[Share]
path = /var/samba
valid users = @everybody
force group = +everybody
writeable = yes
create mask = 0660
force create mode = 0110
directory mask = 0770
[folderA]
path = /var/samba/folderA
valid users = @users_folderA
force group = +users_folderA
browseable = no
[folderB]
path = /var/samba/folderB
valid users = @users_folderB
force group = +users_folderB
browseable = no
[folderC]
path = /var/samba/folderC
valid users = @users_folderC
force group = +users_folderC
browseable = no
[folderD]
path = /var/samba/folderD
valid users = @users_folderD
force group = +users_folderD
browseable = no
設定を確認してsambaを再起動することを忘れないでください:
# testparm
# service smbd restart
# service nmbd restart
権限を設定します。
chown root:everybody /var/samba
chmod 770 /var/samba
chown root:users_folderA /var/samba/folderA
chmod 2770 /var/samba/folderA
chown root:users_folderB /var/samba/folderB
chmod 2770 /var/samba/folderB
chown root:users_folderC /var/samba/folderC
chmod 2770 /var/samba/folderC
chown root:users_folderD /var/samba/folderD
chmod 2770 /var/samba/folderD
この方法では、内部フォルダーへの直接アクセスは許可されません。さらに、それらはまったく表示されず、親フォルダーを介してのみアクセスできます。