Cygwin mkdir создает каталог, на который у меня нет прав

Cygwin mkdir создает каталог, на который у меня нет прав

Использую последнюю версию cygwin64 в Windows 10. Мне удалось получить каталог 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

Избыток DENY, показанный icacls, может быть вызван недавними изменениями в 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

Связанный контент