web-dev-qa-db-fra.com

cygwin définit l'autorisation de fichier sur 000

J'ai un dossier/cygwin/d/monfolder/Et chaque fois que j'enregistre des fichiers là-bas, de cygwin si je fais un ls -la je vois que les fichiers sont autorisés 000. Cela me pose en fait pas mal de problèmes car je rsync ceci dossier sur mon serveur et aucun des fichiers n'est accessible. Comment puis-je obtenir les fichiers pour obtenir automatiquement une autorisation raisonnable?

56
user391986

Lisez les réponses sur ce lien: http://cygwin.1069669.n5.nabble.com/vim-and-file-permissions-on-Windows-7-td61390.html

La solution a également fonctionné pour moi:

Editez /etc/fstab et ajoutez cette ligne à la fin du fichier:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

Fermez ensuite tous les processus Cygwin, ouvrez un nouveau terminal et ls -l sur vos fichiers à nouveau.

Explication: Par défaut, Cygwin utilise les listes de contrôle d'accès (ACL) du système de fichiers pour implémenter les autorisations POSIX réelles. Certains programmes ou processus natifs de Windows peuvent créer ou modifier les ACL de telle sorte que Cygwin calcule les autorisations POSIX en 000. Avec l'option de montage noacl , Cygwin ignore le système de fichiers ACL et simule uniquement un sous-ensemble de bits d'autorisation basé sur l'attribut DOS en lecture seule.

116
Ed Randall

Vérifiez que votre umask est correctement défini avec la commande umask. Si votre umask est 0777, cela soustrait les autorisations des nouveaux fichiers et se terminera par 000 autorisations. Il y a probablement plusieurs autres possibilités à considérer au-delà de cela.

Si votre identifiant n'est pas configuré correctement dans/etc/passwd et/etc/group, cela peut également entraîner ls pour afficher des résultats inattendus. Vérifiez les autorisations du dossier. Vérifiez également les autorisations Windows avec la commande getfacl. Peut-être aussi vérifiez la commande mount.

6
joemooney

Dans la réponse ci-dessus, une solution a été proposée:

Modifiez/etc/fstab et ajoutez cette ligne à la fin du fichier:

aucun/cygdrive cygdrive binaire, noacl, posix = 0, utilisateur 0 0

Et dans cette réponse, il y avait ce commentaire:

Quand j'essaye, tous mes fichiers sont -rw-r - r-- peu importe ce que je fais chmod (). Je ne peux pas marquer les fichiers comme exécutables; il revient simplement à 0644. (umask == 0022)

J'ai eu ce même problème, mais il s'est manifesté par l'impossibilité d'exécuter des fichiers batch DOS (* .bat) lors de l'exécution de Cygwin ksh ou mksh. Je suis tombé sur ce site Web: http://pipeline.lbl.gov/code/3rd_party/licenses.win/cygwin-doc-1.4/html/faq/ qui contient ces conseils utiles:

Notez que vous pouvez utiliser mount -x pour forcer Cygwin à traiter tous les fichiers sous le point de montage comme exécutables. Cela peut être utilisé pour des fichiers individuels ainsi que des répertoires. Ensuite, Cygwin ne prendra pas la peine de lire les fichiers pour déterminer s'ils sont exécutables.

Alors croisement avec cette page - https://cygwin.com/cygwin-ug-net/using.html#mount-table - avec ses conseils:

cygexec - Traite tous les fichiers sous le point de montage comme des exécutables cygwin.

J'ai ajouté cygexec au quatrième champ de mon fstab. Ça l'a fait. Mon .bat est maintenant exécutable dans ksh/mksh, ce qui est nécessaire car j'exécute un travail Jenkins qui appelle une pile de Korn Shell pile 3 fichiers en profondeur, sur lequel je n'ai aucun contrôle modifiable. J'avais juste besoin du .bat pour courir!

Mise à jour: la solution ci-dessus n'était pas tout à fait ce dont j'avais besoin, lors de tests supplémentaires. Il en est résulté que certains exécutables tels que javac et cl se comportent bizarrement (les utilitaires imprimeraient leur utilisation et sortiraient). Je pense que ce dont j'avais besoin au lieu de "cygexec" était simplement "exec". Comme le note la même page:

exec - Traite tous les fichiers sous le point de montage comme exécutables.

3
Bernard Assaf

Sur mon PC Win7, les fichiers étaient généralement ---------- + 1 David None 69120 17 juin 13:17 mydoc.txt

J'ai essayé tout ce qui précède pas de chance. Il s'est avéré que j'avais encore d'anciennes entrées de montage historiques dans mon .zshrc.

2
zzapper