題 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 問題依然存在。


7
2018-06-16 02:28


起源


嘗試 setfacl -b foo - matzeri
@matzeri似乎有用 - 如果你能用解釋寫出答案,我會投票並接受 - M.M


答案:


icacls顯示的過量DENY可能是由於最近cygwin dll的變化(2.3和當前2.5之間)。它花了一些時間才是正確的,並且可能會讓文件或目錄中存在令人費解的ACL。

要清理ACL,a -b switch已添加到setfacl

setfacl -b foo

以供參考 https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s


7
2018-06-22 15:49



當我解壓縮一些由具有不同版本的cygwin的人創建的文件時,問題就產生了,所以這個解釋很有意義 - M.M