web-dev-qa-db-ja.com

Samba-独自の権限でサブディレクトリ共有を作成する

次のような多くのフォルダを含む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経由でマウントされます。

9
soner

この構成を試してください(共有セクションの場合):

[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

この方法では、内部フォルダーへの直接アクセスは許可されません。さらに、それらはまったく表示されず、親フォルダーを介してのみアクセスできます。

5
Oleg Bolden