Usando la última versión de cygwin64 en Windows 10. Logré obtener un directorio foo
que tiene algo extraño en sus permisos. No estoy muy seguro de cómo sucedió esto, pero estos son los síntomas:
$ 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
Esto no sucede con otros directorios, por ejemplo /f/temp/ok
. Al usar ls
interruptores no veo ninguna diferencia entre f/temp/ok
y /f/temp/foo
.
Si lo hago chmod 775 bar
, puedo ingresar bar
, pero luego crear un directorio bar
tiene el mismo problema. Entonces este problema me impide git init
hacerlo /f/temp/foo
. Hacer chown -R Mm *
en los padres no hace ninguna diferencia.
Mi pregunta es: ¿Qué está causando este problema y cuál es la solución adecuada?
Hay algunas diferencias visibles icacls
pero no estoy seguro de cómo interpretarlas:
$ 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)
Tengo una solución alternativa por ahora: cree otro directorio en /f/temp
, luego utilícelo cp -r
para copiar todos los archivos foo
al nuevo directorio, luego elimine foo
y cambie el nombre del nuevo directorio. Si uso cp -a
en lugar de cp -r
el problema persiste.
Respuesta1
El exceso de DENY mostrado por icacls puede deberse a los cambios recientes en cygwin dll (entre 2.3 y 2.5 actual). Tomó algo de tiempo para estar en lo cierto y podría haber dejado archivos o directorios con una ACL desconcertante.
Para desinfectar las ACL, -b
se agregó un interruptor a setfacl
setfacl -b foo
Para referenciahttps://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s