Cygwin MKDIR делает каталог, к которому у меня нет прав

3602
M.M

Используя последнюю версию 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этого проблема сохраняется.

8
попробуйте `setfacl -b foo` matzeri 7 лет назад 1
@matzeri, который, казалось, работал - если вы можете написать ответ с объяснением, я проголосую и приму M.M 7 лет назад 0

1 ответ на вопрос

7
matzeri

Избыток 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

Проблема возникла, когда я разархивировал некоторые файлы, созданные кем-то с другой версией Cygwin, так что объяснение имеет смысл M.M 7 лет назад 1

Похожие вопросы