Cygwin mkdir faz diretório não tenho permissões para

7

Usando a versão mais recente do cygwin64 no Windows 10. Eu consegui obter um diretório foo que tem algo estranho sobre 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, %código%. Usando switches /f/temp/ok não consigo ver nenhuma diferença entre ls e f/temp/ok .

Se eu fizer /f/temp/foo , posso inserir chmod 775 bar , mas criar um diretório em bar terá o mesmo problema. Então, esse problema está me impedindo de fazer bar em git init . Fazer /f/temp/foo no pai não faz diferença.

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

Existem algumas diferenças visíveis com chown -R Mm * , 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 por enquanto: crie outro diretório em icacls , use /f/temp para copiar todos os arquivos de cp -r para o novo diretório, exclua foo e renomeie o novo diretório. Se eu usar foo em vez de cp -a , o problema persistirá.

    
por M.M 16.06.2016 / 04:28

1 resposta

7

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

Para limpar as ACLs, uma opção -b foi adicionada ao setfacl

setfacl -b foo

Para referência link

    
por 22.06.2016 / 17:49