Cygwin mkdirは権限のないディレクトリを作成します

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/foochown -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、問題は解決しません。

答え1

icacls によって表示される DENY の過剰は、cygwin dll (2.3 と現在の 2.5 の間) の最近の変更によって発生した可能性があります。正しくなるまでにいくつかのラウンドが必要で、ファイルまたはディレクトリに不可解な ACL が残っている可能性があります。

ACLをサニタイズするために、-bsetfaclにスイッチが追加されました。

setfacl -b foo

参考のためov-new2.4s は、以下の URL からダウンロードできます。

関連情報