Cygwin mkdir crée un répertoire auquel je n'ai pas les autorisations


10

En utilisant la dernière version de cygwin64 dans Windows 10. J'ai réussi à obtenir un répertoire fooqui a quelque chose d'étrange sur ses autorisations. Je ne sais pas trop comment cela s'est produit, mais voici les symptômes:

$ cd /f/temp/foo
$ ls -lad .
drwxrwx---+ 1 Mm None 0 Jun 16 14:03 .
$ mkdir bar
$ ls -lad bar
d---rwx---+ 1 Mm None 0 Jun 16 14:17 .
$ cd bar
Permission denied
$ umask
0022

Cela ne se produit pas pour d'autres répertoires, par exemple /f/temp/ok. En utilisant des lscommutateurs, je ne vois aucune différence entre f/temp/oket /f/temp/foo.

Si je le fais, chmod 775 barje peux entrer bar, mais créer un répertoire sous bara le même problème. Donc , ce problème me arrêter de faire git initdans /f/temp/foo. Faire chown -R Mm *dans le parent ne fait aucune différence.

Ma question est: Quelle est la cause de ce problème et quelle est la solution appropriée?

Il y a quelques différences visibles icaclsmais je ne sais pas comment les interpréter:

$ cd /f/temp
$ icacls ok  >ok.txt
$ icacls foo >foo.txt
$ diff -b ok.txt foo.txt
1c1
< ok NULL SID:(DENY)(Rc,S,REA,WEA,X,DC)
---
> foo NULL SID:(DENY)(Rc,S,REA,WEA,X,DC)
3c3
<   DESKTOP-AO2AIEC\None:(RX)
---
>    DESKTOP-AO2AIEC\None:(Rc,S,RA)
8c8
<   Everyone:(RX)
---
>    Everyone:(Rc,S,RA)
10,11c10,12
<   CREATOR OWNER:(OI)(CI)(IO)(F)
<   CREATOR GROUP:(OI)(CI)(IO)(RX)
---
>    CREATOR OWNER:(OI)(CI)(IO)(DENY)(S,RD,WD,AD,REA,WEA,X,DC)
>    CREATOR OWNER:(OI)(CI)(IO)(D,Rc,WDAC,WO,RA,WA)
>    CREATOR GROUP:(OI)(CI)(IO)(Rc,S,RA)
16c17
<   Everyone:(OI)(CI)(IO)(RX)
---
>    Everyone:(OI)(CI)(IO)(Rc,S,RA)

J'ai une solution de contournement pour l'instant: créez un autre répertoire sous /f/temp, puis utilisez cp -rpour copier tous les fichiers foodans le nouveau répertoire, puis supprimez fooet renommez le nouveau répertoire. Si j'utilise à la cp -aplace cp -rle problème persiste.


1
essayersetfacl -b foo
matzeri

@matzeri qui semblait fonctionner - si vous pouvez rédiger une réponse avec une explication, je voterai et accepterai
MM

Réponses:


10

L'excès de DENY montré par icacls peut être provoqué par les changements récents de cygwin dll (entre 2,3 et 2,5 actuel). Il a fallu un certain temps pour avoir raison et aurait pu laisser des fichiers ou un répertoire avec une ACL déroutante.

Pour désinfecter les ACL, un -bcommutateur a été ajouté à setfacl

setfacl -b foo

Pour référence https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s


1
Le problème est apparu lorsque j'ai décompressé certains fichiers créés par quelqu'un avec une version différente de cygwin, donc cette explication est logique
MM
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.