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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.