web-dev-qa-db-fra.com

préservation des autorisations de fichiers pour les partages samba lorsque le fichier est modifié

Les bases de code avec lesquelles je travaille sont extraites des référentiels Git sur ma machine Linux. Étant donné que notre code de production est écrit pour être déployé sur Linux, je fais tous les tests sur ma machine Linux mais j'aime utiliser Windows pour un usage quotidien, y compris l'édition/la création de code.

À cette fin, j'ai créé un partage Samba du dossier (mon dossier personnel) où je récupère le code, comme ceci:

[wgrover]
    path = /home/wgrover
    available = yes
    valid users = wgrover
    read only = no
    browsable = yes
    public = yes
    writable = yes

Cependant, lorsque je modifie un fichier à partir du partage samba \\linux-box\wgrover sous Windows, l'autorisation de fichier sous Linux ne cesse de changer en 755 même si c'était 644 avant modification.

Cela continue à apparaître dans mon git diff comme ça:

diff --git a/debian/maggie.nginx.conf b/debian/maggie.nginx.conf
old mode 100644
new mode 100755
index 7cda506..7eab574

Il est possible de définir un create mask dans smb.conf mais qui ne "conservera" pas non plus les autorisations du fichier d'origine. Je peux ignorer les changements de mode de fichier dans git en définissant fileMode = false dans .gitconfig mais qui ignore également le problème.

Existe-t-il un moyen de conserver les autorisations des fichiers lorsqu'ils sont modifiés à partir de Linux?

47
recognosco

Pourrait enfin comprendre pourquoi l'autorisation changeait. La confusion est née du map archive = yes paramètre étant la valeur par défaut dans Samba. Après avoir défini map archive = no, le propriétaire du bit d'exécution a commencé à se comporter comme je m'attendais à ce qu'il se comporte.

Trouvé la réponse en lisant la documentation ici: http://www.samba.org/samba/docs/using_samba/ch08.html dans le Autorisations de fichier et Attributs sur la section MS-DOS et Unix . Il mentionne clairement cet effet secondaire:

Par conséquent, aucun des trois bits exécutables Unix présents sur un fichier d'un partage de disque Samba n'est utile. Cependant, les fichiers DOS ont leurs propres attributs qui doivent être conservés lorsqu'ils sont stockés dans un environnement Unix: l'archive, le système et les bits cachés. Samba peut conserver ces bits en réutilisant les bits d'autorisation exécutables du fichier du côté Unix - s'il lui est demandé de le faire. Le mappage de ces bits, cependant, a un effet secondaire malheureux: si un utilisateur Windows stocke un fichier dans un partage Samba et que vous le visualisez sur Unix avec le ls -al commande, certains des bits exécutables ne signifieront pas ce que vous attendez d'eux.

Cependant, il mentionne également ceci:

Nous devons vous avertir que la valeur par défaut du map archive option est yes, tandis que les deux autres options ont une valeur par défaut de no. Cela est dû au fait que de nombreux programmes ne fonctionnent pas correctement si le bit d'archive n'est pas stocké correctement pour les fichiers DOS et Windows. Le système et les attributs cachés, cependant, ne sont pas critiques pour le fonctionnement d'un programme et sont laissés à la discrétion de l'administrateur.

Vous pouvez également en savoir plus sur le bit d'archive ici: http://en.wikipedia.org/wiki/Archive_bit

71
recognosco