Samba - Créez des partages de sous-répertoire avec leurs propres autorisations


9

J'ai un partage Samba contenant de nombreux dossiers comme celui-ci:

share
  - folderA
  - folderB
  - folderC
  - folderD

Une vingtaine d'utilisateurs accèdent à ces partages. Chaque utilisateur peut avoir son accès individuel à certains des répertoires, par exemple Ben peut accéder au dossier A et au dossier C, mais pas au dossier B et au dossier D. Jenny peut accéder au dossier B et au dossier C, etc.

Je ne veux pas que les utilisateurs montent chaque dossier dont ils ont besoin. Je veux qu'ils montent le dossier "share" qui contient tous les sous-dossiers. L'accès est alors limité en définissant les autorisations Linux.

J'ai créé un groupe pour chaque sous-répertoire et ajouté les utilisateurs à ces groupes. Le contrôle d'accès fonctionne parfaitement pour les fichiers existants. Mais chaque fois qu'un utilisateur crée un fichier dans un sous-répertoire, il est refusé à tout autre utilisateur disposant de l'autorisation d'accès en lecture / écriture dans ce répertoire. Pour résoudre ce problème, j'ai joué avec le masquage de samba, mais je n'arrive pas à le faire fonctionner.

Ma conf Samba ressemble à ceci:

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

Donc, évidemment, chaque utilisateur est dans le groupe tout le monde, afin qu'ils puissent monter le partage avec les sous-répertoires. L'accès à chaque sous-répertoire fonctionne parfaitement bien. Mais chaque fois que Ben crée un fichier dans le dossier C, le fichier obtient les autorisations de fichier -rwxr - r-- mais il devrait être -rwxrwx ---

Je pense que les partages pour les dossiers individuels ne fonctionnent pas du tout parce que j'ai essayé de mettre en écriture = non et en lecture seule = oui pour le tester. Redémarrer smbd et nmbd et remonter le partage réseau (sous Windows 10). Les utilisateurs ont pu créer des fichiers et modifier les leurs.

Cela fonctionne sur un Raspberry Pi avec Raspbian. Le disque dur contenant les fichiers est formaté en ext4 et monté via fstab.


Pour forcer les droits d'accès souhaités aux fichiers, utilisez l' force create mode = 770instruction dans la folderCsection de votre configuration.
Oleg Bolden du

Merci, cela n'a pas résolu le problème, mais j'ai remarqué que j'avais des espaces dans les chemins de mon vrai smb.conf: [folderA] path = / var / samba / some folder with espaces. J'ai résolu ce problème en joignant le chemin avec "(" / var / samba / certains dossiers avec des espaces "). Les paramètres du paragraphe [folderA] ne sont utilisés que lorsque l'utilisateur monte directement [folderA], mais les paramètres ne le sont pas utilisé lorsque l'utilisateur monte [partage] et navigue dans le dossier A. Les paramètres de [partage] sont utilisés pour le dossier A. Comment puis-je contourner les paramètres [partage] pour le dossier A sans monter directement le dossier A mais y accéder à partir de [partage]?
soner

Réponses:


5

Essayez cette configuration (pour les sections de partage):

[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

N'oubliez pas de vérifier la configuration et de redémarrer samba:

# testparm
# service smbd restart
# service nmbd restart

Définissez les autorisations:

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

De cette façon, l'accès direct aux dossiers internes n'est pas autorisé. De plus, ils ne sont pas visibles du tout et ne sont accessibles que via le dossier parent.


Merci, cela a fonctionné. Maintenant, nous avons un autre problème: Excel 2016 n'est pas en mesure d'enregistrer des fichiers de plus de 13 Ko dans Samba. Mais c'est un autre sujet. Merci beaucoup pour votre aide!
soner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.