Cygwin mkdir은 권한이없는 디렉토리를 만듭니다. 아무런 차이가 없습니다. 내 질문은 :이

Windows 10에서 최신 버전의 cygwin64를 foo사용하고 있습니다. 권한에 이상한 디렉토리가 생겼습니다 . 어떻게 이런 일이 있었는지 잘 모르겠지만 증상은 다음과 같습니다.

$ 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

예를 들어 다른 디렉토리에서는 발생하지 않습니다 /f/temp/ok. ls스위치를 사용하여 f/temp/ok와의 차이점을 볼 수 없습니다 /f/temp/foo.

그렇게하면을 chmod 775 bar입력 할 수 bar있지만 아래에 디렉토리를 만드는 것은 bar같은 문제가 있습니다. 이 문제가 중지되고 그래서 나 일 git init에서 /f/temp/foo. 이렇게 chown -R Mm *부모에 아무런 차이가 없습니다.

내 질문은 :이 문제의 원인은 무엇이며 올바른 해결책은 무엇입니까?

몇 가지 차이점이 icacls있지만 해석 방법을 잘 모르겠습니다.

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

해결 방법이 있습니다 :에서 다른 디렉토리를 /f/temp만든 다음 cp -r모든 파일을 foo새 디렉토리로 복사 한 다음 새 디렉토리를 삭제 foo하고 이름을 바꾸십시오. 문제 cp -a대신 사용 cp -r하면 문제가 지속됩니다.



답변

icacls에 의해 나타난 DENY의 초과는 cygwin dll의 최근 변경 (2.3에서 현재 2.5 사이)으로 인해 발생할 수 있습니다. 약간의 라운드가 필요했으며, 수수께끼를 낸 ACL로 파일이나 디렉토리를 남길 수 있습니다.

ACL을 삭제하기 -b위해 setfacl에 스위치가 추가되었습니다.

setfacl -b foo

참조 https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s