Samba - Twórz udziały podkatalogu z własnymi uprawnieniami

9

Mam udział w Sambie zawierający wiele takich folderów:

share
  - folderA
  - folderB
  - folderC
  - folderD

Dostęp do tych udziałów ma około 20 użytkowników. Każdy użytkownik może mieć indywidualny dostęp do niektórych katalogów, na przykład Ben może uzyskać dostęp do folderu A i folderu C, ale nie do folderu B i folderu D. Jenny może uzyskać dostęp do folderu B i folderu C itd.

Nie chcę, aby użytkownicy montowali każdy potrzebny folder. Chcę, aby zamontowali folder „share”, który zawiera wszystkie podfoldery. Dostęp jest następnie ograniczony przez ustawienie uprawnień do systemu Linux.

Utworzyłem grupę dla każdego podkatalogu i dodałem użytkowników do tych grup. Kontrola dostępu działa idealnie dla istniejących plików. Ale ilekroć użytkownik tworzy plik w podkatalogu, odmawia się go każdemu innemu użytkownikowi, który ma uprawnienia do odczytu / zapisu w tym katalogu. Aby rozwiązać ten problem, bawiłem się maskowaniem samby, ale nie mogę go uruchomić.

Moja konfiguracja Samby wygląda następująco:

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

Oczywiście każdy użytkownik jest w grupie, więc mogą zamontować udział w podkatalogach. Dostęp do każdego podkatalogu działa doskonale. Ale ilekroć Ben tworzy plik w folderze C, plik otrzymuje uprawnienia do pliku -rwxr - r-- ale powinien to być -rwxrwx ---

Myślę, że udziały dla poszczególnych folderów w ogóle nie działają, ponieważ próbowałem ustawić writeable = no i read only = yes, aby to przetestować. Zrestartowałem smbd i nmbd i ponownie zamontowałem udział sieciowy (w Windows 10). Użytkownicy mogli tworzyć pliki i modyfikować własne.

Działa to na malinowe pi z raspbian. Dysk twardy z plikami jest sformatowany jako ext4 i zamontowany przez fstab.

soner
źródło
Aby wymusić pożądane prawa dostępu do plików, użyj force create mode = 770instrukcji w folderCsekcji konfiguracji.
Oleg Bolden
Dzięki, że to właściwie nie rozwiązało problemu, ale zauważyłem, że mam spacje na ścieżkach mojego prawdziwego pliku smb.conf: [folderA] ścieżka = / var / samba / some folder with spaces. Rozwiązałem ten problem, dołączając ścieżkę do „(„ / var / samba / some folder with spaces ”). Ustawienia w akapicie [folderA] są używane tylko wtedy, gdy użytkownik montuje bezpośrednio [folderA], ale ustawienia nie są używany, gdy użytkownik montuje [udostępnij] i nawiguje do folderu A. Ustawienia [share] są używane dla folderu A. Jak mogę ominąć ustawienia [udostępnij] dla folderu A bez bezpośredniego montowania folderu A, ale uzyskując do niego dostęp z [udziału]?
soner

Odpowiedzi:

5

Wypróbuj tę konfigurację (dla sekcji udostępniania):

[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

Nie zapomnij sprawdzić konfiguracji i zrestartować sambę:

# testparm
# service smbd restart
# service nmbd restart

Ustaw uprawnienia:

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

W ten sposób bezpośredni dostęp do folderów wewnętrznych nie jest dozwolony. Co więcej, nie są one w ogóle widoczne i można uzyskać do nich dostęp tylko za pośrednictwem folderu nadrzędnego.

Oleg Bolden
źródło
Dzięki, działało. Teraz mamy kolejny problem polegający na tym, że Excel 2016 nie jest w stanie zapisywać plików większych niż 13 KB na Sambie. Ale to inny temat. Dziękuję bardzo za pomoc!
soner 21.04.16