web-dev-qa-db-fra.com

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

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 conformément aux 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 le drapeau set group id, donc le propriétaire du groupe sambashare. L'idée est que les utilisateurs de samba et les utilisateurs de serveur appartiennent au groupe sambashare et doivent donc pouvoir modifier, supprimer et créer des fichiers et des répertoires. Cependant, comme les dossiers créés ne possèdent pas l'indicateur d'écriture pour le groupe défini, 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, du mode répertoire forcé, du mode de sécurité du répertoire et du mode de sécurité du répertoire forcé, mais les comportements demeurent. Les fichiers et les dossiers nouvellement créés n'obtiennent 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?

16
Zaz

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 explication intéressante sur le fonctionnement de ces paramètres, mais je ne pouvais rien trouver de mieux alors man smb.conf

Vous devrez faire défiler un peu pour ces options.

En résumé, les autorisations Windows ne sont pas identiques à Unix (linux) et il est un peu étrange de voir comment samba mappe les autorisations.

18
Panther

Après de nombreuses tentatives d’essais et d’erreur, c’est le bon code pour partager le répertoire samba à l’aide de groupes SGID et Unix. Si l'utilisateur se connecte de manière anonyme, il obtient le droit d'accès. S'il se connecte et qu'il est membre du groupe attribué, il obtient le droit d'accès.

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

Je force l'utilisateur à ne faire appel à personne, afin que différentes personnes travaillant sur les mêmes fichiers ne se gênent pas.

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, je partage donc la configuration fixe ici. Dans samba, moins vous spécifiez de directives, mieux cela fonctionne.

8
Andrius K

J'ai eu le même problème, mais tout comme les directives de masque n'a pas fonctionne pour moi (Samba 4.3.11):

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

La seule option qui a fonctionné était sous la section [global] ou share:

 inherit permissions = yes

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

6
Medox

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 le spécifiez.

[global]

unix extensions = no

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

2
Erik Carlseen
 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
0
Ghanshyam Nakiya