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
、問題は解決しません。
答え1
icacls によって表示される DENY の過剰は、cygwin dll (2.3 と現在の 2.5 の間) の最近の変更によって発生した可能性があります。正しくなるまでにいくつかのラウンドが必要で、ファイルまたはディレクトリに不可解な ACL が残っている可能性があります。
ACLをサニタイズするために、-b
setfaclにスイッチが追加されました。
setfacl -b foo