Samba: crea condivisioni di sottodirectory con le proprie autorizzazioni


9

Ho una condivisione Samba contenente molte cartelle come questa:

share
  - folderA
  - folderB
  - folderC
  - folderD

Ci sono circa 20 utenti che accedono a tali condivisioni. Ogni utente può avere il proprio accesso individuale ad alcune delle directory, ad esempio Ben può accedere alla cartella A e alla cartella C, ma non alla cartella B e alla cartella D. Jenny può accedere alla cartella B e alla cartella C e così via.

Non voglio che gli utenti montino ogni cartella di cui hanno bisogno. Voglio che montino la cartella "share" che contiene tutte le sottocartelle. L'accesso è quindi limitato impostando le autorizzazioni di Linux.

Ho creato un gruppo per ogni sottodirectory e ho aggiunto gli utenti a quei gruppi. Il controllo di accesso funziona perfettamente per i file esistenti. Ma ogni volta che un utente crea un file in una sottodirectory, viene negato a tutti gli altri utenti che dispongono dell'autorizzazione per l'accesso in lettura / scrittura in quella directory. Per risolvere questo, ho giocato con il mascheramento della samba ma non riesco a farlo funzionare.

La mia conf Samba si presenta così:

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

Quindi ovviamente ogni utente è nel gruppo di tutti, quindi possono montare la condivisione con le sottodirectory. L'accesso per ciascuna sottodirectory funziona perfettamente. Ma ogni volta che Ben crea un file nella cartella C, il file ottiene i permessi del file -rwxr - r-- ma dovrebbe essere -rwxrwx ---

Penso che le condivisioni per le singole cartelle non funzionino affatto perché ho provato a impostare scrivibile = no e sola lettura = sì per testarlo. Riavviato smbd e nmbd e rimontato la condivisione di rete (in Windows 10). Gli utenti sono stati in grado di creare file e modificarne i propri.

Questo gira su un lampone pi con raspbian. Il disco rigido con i file è formattato come ext4 e montato tramite fstab.


Per forzare i diritti di accesso desiderati ai file, utilizzare l' force create mode = 770istruzione nella folderCsezione della configurazione.
Oleg Bolden,

Grazie, questo in realtà non ha risolto il problema ma ho notato che avevo spazi nei percorsi del mio vero smb.conf: [cartellaA] percorso = / var / samba / alcune cartelle con spazi. Ho risolto il problema racchiudendo il percorso con "(" / var / samba / alcune cartelle con spazi "). Le impostazioni nel paragrafo [cartellaA] sono in uso solo quando l'utente monta direttamente [cartellaA], ma le impostazioni non lo sono utilizzato quando l'utente monta [condividi] e naviga nella cartella A. Le impostazioni di [condividi] vengono utilizzate per la cartella A. Come posso ignorare le impostazioni [condividi] per la cartella A senza montare direttamente la cartella A ma accedendo da [condividi]?
soner

Risposte:


5

Prova questa configurazione (per le sezioni di condivisione):

[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

Non dimenticare di controllare la configurazione e riavviare samba:

# testparm
# service smbd restart
# service nmbd restart

Imposta autorizzazioni:

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

In questo modo non è consentito l'accesso diretto alle cartelle interne. Inoltre, non sono affatto visibili e sono accessibili solo attraverso la cartella principale.


Grazie, ha funzionato. Ora abbiamo un altro problema che Excel 2016 non è in grado di salvare su Samba file di dimensioni superiori a 13 KB. Ma questo è un altro argomento. Grazie mille per l'aiuto!
soner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.