Je ne peux pas obtenir de samba pour définir les autorisations appropriées sur les répertoires créés

17

J'ai un serveur Ubuntu partageant certains dossiers en utilisant Samba. Lorsqu'un client crée un nouveau dossier ou fichier, les autorisations ne sont pas définies en fonction des paramètres de smb.conf.

Mes paramètres actuels pour un partage spécifique:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Lorsqu'un client samba (une boîte Windows 7) utilise le compte 'netuser' pour créer un fichier ou un répertoire, les autorisations deviennent

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

Le répertoire parent a l'indicateur set group id, donc le propriétaire du groupe sambashare. L'idée est que les utilisateurs de samba et les utilisateurs de serveurs appartiennent au groupe sambashare et doivent donc pouvoir éditer, supprimer et créer des fichiers et des répertoires. Cependant, comme les dossiers créés n'ont pas l'indicateur d'écriture pour le groupe, les utilisateurs du serveur ne peuvent pas créer de nouveaux fichiers ou dossiers dans ces dossiers sans sudo.

J'ai testé l'ajout et la suppression du masque de répertoire, le mode de répertoire forcé, le mode de sécurité de répertoire et le mode de sécurité de répertoire forcé, mais les comportements persistent. Les fichiers et dossiers nouvellement créés ne reçoivent pas l'autorisation 774 prévue, mais plutôt 764 et 754 respectivement.

Qu'est-ce que je rate? Pourquoi Samba ne définit-il pas les autorisations appropriées?

Zaz
la source

Réponses:

19

Je pense que vous devez utiliser les paramètres suivants:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Je cherchais une belle explication sur le fonctionnement de ces paramètres, mais je n'ai rien trouvé de mieux que man smb.conf

Vous devrez faire défiler un peu ces options.

Fondamentalement, en résumé, les autorisations Windows ne sont pas les mêmes que celles d'Unix (Linux) et la façon dont Samba mappe les autorisations est un peu étrange.

Panthère
la source
1
Oui, cela semble être à peu près la même page de manuel que samba.org/samba/docs/man/manpages-3/smb.conf.5.html que j'ai regardé, le problème est qu'il ne semble pas avoir d'importance quel octal valeurs que j'ai définies, j'obtiens toujours les mêmes autorisations définies sur le fichier ou dossier créé.
Zaz
Avez-vous défini toutes les options que je vous ai données? Si oui, veuillez mettre à jour votre premier message et à ce stade, je vous suggère de déposer un rapport de bogue.
Panther
1
Il a déjà dit .. mais en y regardant de plus près et en testant, l'ajout de 2 au masque de répertoire a résolu le problème. Merci beaucoup. : D
Zaz
Fantastique, merci de marquer cela comme la réponse acceptée, cela aide les autres avec un problème similaire.
Panther
La configuration de Samba est trop complexe et vraiment difficile à comprendre. Par exemple, quelle est la différence logique entre créer de la force et simplement créer ... n'a aucun sens. Votre indice est pourtant un épargnant de vie - merci!
Matthias Hryniszak
8

Après beaucoup d'essais et d'erreurs, c'est le bon code pour partager le répertoire samba en utilisant les groupes SGID et Unix. Si l'utilisateur se connecte de manière anonyme, il obtient r / o, s'il se connecte et est membre du groupe affecté, il obtient r / w.

J'ai un groupe nommé «admin» défini comme groupe principal pour les utilisateurs avec des privilèges d'écriture, tout le monde obtient des droits en lecture seule.

Je force l'utilisateur à personne, de sorte que différentes personnes travaillant sur les mêmes fichiers n'interfèrent pas entre elles.

J'ai mis chmod 2755 sur le répertoire partagé, donc il hérite des répertoires créés avec le même groupe 'admin'

$ chmod -R 2755 /home/shares/test

Vérifier si tout va bien:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Partie pertinente de /etc/samba/smb.conf:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Ce message m'a mis sur la bonne voie, mais testparm a révélé 4 directives incorrectes, donc je partage la configuration fixe ici. Dans samba, moins vous spécifiez de directives, mieux cela fonctionne.

Andrius K
la source
7

J'ai eu le même problème, mais tout comme les directives de masquage ne fonctionnait pas pour moi (Samba 4.3.11):

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

La seule option qui fonctionnait était sous la section [globale] ou partage:

 inherit permissions = yes

Modifiez simplement toutes les autorisations de dossier et de fichier selon vos besoins, afin que les futurs dossiers et fichiers héritent des mêmes autorisations.

Medox
la source
J'utilise la version 4.7.6-Ubuntu de Samba. Et cela fonctionne aussi pour moi.
Andi S.
vraie réponse pour 4.8.11le freebsdaussi :)
gigue
Simple et parfait le 18.04.3
Merritt Il y a
3

Il existe un problème très similaire lors de la connexion à partir d'autres périphériques Unix / Linux / OSX / MacOS: tous les paramètres sont ignorés sauf si vous spécifiez

[global]

unix extensions = no

Et connectez-vous avec smb://<serverhost>au lieu de cifs://<serverhost>.

Erik Carlseen
la source
0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
Ghanshyam Nakiya
la source