web-dev-qa-db-ja.com

Cygwinmkdirは私が許可を持っていないディレクトリを作ります

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_を使用すると、問題が解決しません。

9
M.M

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

10
matzeri