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


9

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


ファイルに必要なアクセス権を強制するには、設定のセクションのforce create mode = 770ステートメントを使用しますfolderC
Oleg Bolden

おかげで、実際には問題は解決しませんでしたが、実際のsmb.confのパスにスペースが含まれていることに気付きました。[folderA] path = / var / samba /スペースのあるフォルダー 「( "/ var / samba / some folder with space"」でパスを囲むことでこれを解決しました。[folderA]段落の設定は、ユーザーが[folderA]を直接マウントした場合にのみ使用されますが、設定は使用されません。ユーザーが[share]をマウントしてfolderAに移動するときに使用されます。folderAには[share]の設定が使用されます
。folderAを

回答:


5

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

[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

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


ありがとう、これでうまくいきました。Excel 2016が13 KBを超えるファイルをSambaに保存できないという別の問題があります。しかし、それは別のトピックです。助けてくれてありがとう!
2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.