Cygwin mkdir cria diretório que eu não tenho permissão para

10

Usando a versão mais recente do cygwin64 no Windows 10. Consegui obter um diretório fooque tem algo estranho sobre suas permissões. Não sei bem 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 para outros diretórios, por exemplo, /f/temp/ok . Usando lsinterruptores, não vejo diferença entre f/temp/oke /f/temp/foo.

Se eu fizer chmod 775 bar, posso entrarbar , mas criar um diretório em bartem o mesmo problema. Portanto, este problema está parando me fazendo git initem /f/temp/foo. Fazer chown -R Mm *com os pais não faz diferença.

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

Existem algumas diferenças visíveis com icacls mas 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 no momento: coloque outro diretório em /f/tempe use cp -rpara copiar todos os arquivos para fooo novo diretório, exclua fooe renomeie o novo diretório. Se eu usar em cp -avez do cp -rproblema persistir.

MILÍMETROS
fonte
1
tentesetfacl -b foo
matzeri
@matzeri que parecia funcionar - se você pode escrever uma resposta com uma explicação eu vou votar e aceitar
MM

Respostas:

10

O excesso de DENY mostrado pelos icacls pode ser causado pelas alterações recentes na dll cygwin (entre 2,3 e 2,5 atuais). Demorou um pouco para estar certo e poderia ter deixado arquivos ou diretório com a intrigante ACL.

Para higienizar as ACLs, um -bswitch foi adicionado ao setfacl

setfacl -b foo

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

matzeri
fonte
1
O problema surgiu quando eu abriu alguns arquivos que foram criados por alguém com uma versão diferente do cygwin, então essa explicação faz sentido
MM