Faire correspondre les autorisations par défaut de Windows 7 aux valeurs par défaut des fichiers créés par Cygwin

15

J'utilise cygwin sur Windows 7 Professional.

Lorsque je crée de nouveaux fichiers tels que MyNewFile.java, il semble que l'autorisation par défaut soit définie sur 755. Ce n'est pas ce que je veux. Je veux que ce soit 644 pour les fichiers normaux.

C'est très ennuyeux de devoir changer les autorisations chaque fois que je crée de nouveaux fichiers en dehors du terminal cygwin (le cp du terminal cygwin fonctionne bien et conserve les autorisations existantes comme prévu, même en créant de nouveaux fichiers à l'intérieur des œuvres cygwin).

Alternativement, existe-t-il un moyen dans git de changer automatiquement les fichiers * .myextension pour toujours avoir une autorisation spécifique?

Sinon, existe-t-il un moyen de récursivement chmod 644 tous les fichiers * .myextension récursivement sous un dossier (sans affecter les autorisations de dossier!)?

UmaN
la source
1
Pour la solution de secours, cela semble fonctionner: find ./ -type f -name '* .myExtension' -exec chmod 644 {} \;
UmaN
1
Avez-vous essayé umask?
Werner Henze
umask est 0022. Comme indiqué, la création via le terminal cygwin fonctionne très bien. Le problème se produit lors de la copie de fichiers dans l'explorateur Windows ou de la création de fichiers via, par exemple, un IDE lors de la programmation. Cela devrait avoir quelque chose à voir avec la façon dont Windows cygwin traite les autorisations Windows sur les dossiers, je suppose ...
UmaN
4
@UmaN: Un commentaire sur votre commentaire: il n'y a aucune bonne raison de le dire find ./ …; find . …fonctionne très bien, et si vous avez l'habitude de taper find ./tout le temps, un de ces jours vous allez taper find / -exec rm …(ou, de manière équivalente find /. …) par accident.
Scott
1
@UmaN, je pense que la réponse de Casey Crockett serait la solution, oui? Il est sauvegardé par ceci: cygwin.com/ml/cygwin/2011-02/msg00121.html
r_alex_hall

Réponses:

2

Vous devez modifier la sécurité du dossier sous Windows dans lequel cygwin écrit afin qu'il corresponde à votre configuration cygwin.

Par exemple, avec la sécurité par défaut, j'obtiens:

-rwxr-xr-x 1 400 401    0 Jul 29 14:48 New Text Document.txt

Après avoir changé la sécurité du dossier dans Windows, j'obtiens:

-rwxr--r-- 1 400 401    0 Jul 29 14:54 New Text Document 2.txt

J'ai trouvé que l'entrée de sécurité Windows "Tout le monde" correspond à "autre" dans la liste "groupe d'utilisateurs autre" de la commande ls. Supprimez "Lire et exécuter", ne laissant que Lecture pour que celui-ci corresponde. L'entrée de sécurité spéciale CREATOR GROUP correspondait à la partie "groupe" pour moi. Lorsque j'ai désactivé "Lire et exécuter" et laissé uniquement la lecture activée, toute la liste des répertoires correspondait désormais à la sécurité du fichier créé par cygwin.

Casey Crockett
la source
0

Ce que vous essayez de réaliser ici n'est pas clair, mais si vous essayez de faire en sorte que votre cygwin git ignore les autorisations, procédez comme suit:

$ git config --local core.filemode false

stacksharki
la source