Samba-자체 권한으로 하위 디렉토리 공유 생성


9

다음과 같은 많은 폴더가 포함 된 Samba 공유가 있습니다.

share
  - folderA
  - folderB
  - folderC
  - folderD

해당 공유에 액세스하는 사용자는 약 20 명입니다. 모든 사용자는 일부 디렉토리에 개별적으로 액세스 할 수 있습니다. 예를 들어 Ben은 folderB 및 folderD가 아닌 folderA 및 folderC에 액세스 할 수 있습니다. Jenny는 folderB 및 folderC 등에 액세스 할 수 있습니다.

사용자가 필요한 각 폴더를 마운트하지 않기를 바랍니다. 모든 하위 폴더가 포함 된 "share"폴더를 마운트하려고합니다. 그런 다음 리눅스 권한을 설정하여 액세스를 제한합니다.

모든 하위 디렉토리에 대한 그룹을 만들고 해당 그룹에 사용자를 추가했습니다. 액세스 제어는 기존 파일에 완벽하게 작동합니다. 그러나 사용자가 서브 디렉토리에 파일을 작성할 때마다 해당 디렉토리에서 읽기 / 쓰기 액세스 권한이있는 다른 모든 사용자에 대해 파일이 거부됩니다. 이 문제를 해결하기 위해 삼바 마스킹으로 놀았지만 작동시키지 못했습니다.

내 삼바 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). 사용자는 파일을 작성하고 자신의 파일을 수정할 수있었습니다.

이것은 라즈베리 파이와 라즈베리 파이에서 실행됩니다. 파일이있는 하드 드라이브는 ext4로 포맷되고 fstab을 통해 마운트됩니다.


파일에 대한 원하는 액세스 권한을 설정하려면 구성 섹션의 force create mode = 770statement를 사용 folderC하십시오.
Oleg Bolden

감사합니다. 실제로 문제를 해결하지 못했지만 실제 smb.conf 경로에 공백이 있음을 알았습니다. [folderA] path = / var / samba / 일부 폴더에 공백이 있습니다. 경로를 "("/ var / samba / 공백이있는 일부 폴더 ")로 묶어이 문제를 해결했습니다. [folderA] 단락의 설정은 사용자가 [folderA]를 직접 마운트 할 때만 사용되지만 설정은 그렇지 않습니다. 사용자가 [공유]를 마운트하고 폴더 A를 탐색 할 때 사용됩니다. [공유]의 설정은 폴더 A에 사용됩니다. 폴더 A를 직접 마운트하지 않고 [공유]에서 액세스하지 않고 폴더 A에 대한 [공유] 설정을 무시하는 방법
soner

답변:


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

설정을 확인하고 삼바를 다시 시작하는 것을 잊지 마십시오 :

# 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에서 13KB보다 큰 파일을 Samba에 저장할 수 없다는 또 다른 문제가 있습니다. 그러나 그것은 또 다른 주제입니다. 도와 주셔서 감사합니다!
soner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.