Cygwin mkdir cria um diretório para o qual não tenho permissão

Cygwin mkdir cria um diretório para o qual não tenho permissão

Usando a versão mais recente do cygwin64 no Windows 10. Consegui um diretório fooque tem algo estranho em suas permissões. Não tenho certeza de como isso aconteceu, mas aqui estão os sintomas:

$ 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

Isso não acontece com outros diretórios, por exemplo /f/temp/ok, . Usando lsswitches, não consigo ver nenhuma diferença entre f/temp/oke /f/temp/foo.

Se eu fizer chmod 775 barisso, posso entrar bar, mas criar um diretório bartem o mesmo problema. Então esse problema está me impedindo de fazer git initisso /f/temp/foo. Fazer chown -R Mm *nos pais não faz diferença.

Minha pergunta é: o que está causando esse problema e qual é a solução adequada?

Existem algumas diferenças visíveis, icaclsmas não sei como interpretá-las:

$ 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)

Eu tenho uma solução alternativa por enquanto: crie outro diretório em /f/temp, use cp -rpara copiar todos os arquivos para fooo novo diretório, exclua fooe renomeie o novo diretório. Se eu usar cp -aem vez do cp -rproblema persistir.

Responder1

O excesso de DENY mostrado pelo icacls pode ser causado pelas mudanças recentes na dll cygwin (entre 2.3 e 2.5 atual). Demorou um pouco para acertar e poderia ter deixado arquivos ou diretórios com ACL intrigante.

Para higienizar as ACLs, uma -bopção foi adicionada ao setfacl

setfacl -b foo

Para referênciahttps://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s

informação relacionada