MSYS2 разрешения

1121
antonio

В Windows 10 с MSYS2 я установил fstab для:

none / cygdrive binary,posix=0,acl,user 0 0 

Я не могу установить разрешения на выполнение chmod, несмотря на то, что aclнастроил в fstab:

# echo > foo # ls -l foo  -rw-r--r-- 1 ant None 1 Jun 1 19:18 foo  # chmod +x foo # ls -l foo  -rw-r--r-- 1 ant None 1 Jun 1 19:18 foo 

В Cygwin, установив то же самое fstab, для того же файла я получаю:

# ls -l foo  -rwxrwx---+ 1 ant None 1 Jun 1 19:18 foo  

что является ожидаемым поведением.

1
`cygwin` имеет свой собственный` fstab`. Что заставляет вас думать, что результат должен быть одинаковым? DavidPostill 7 лет назад 0
@DavidPostill: я уточнил, что это то же самое. В любом случае, в отличие от Cygwin, MSYS2 по умолчанию использует noacl, поэтому изначально я выделил только первый fstab. antonio 7 лет назад 0
Cygwin знает, как правильно сопоставлять SID (см. [Учетные записи POSIX, разрешения и безопасность] (https://cygwin.com/cygwin-ug-net/ntsec.html)). MSYS2 имеет такую ​​же функциональность? DavidPostill 7 лет назад 0
Посмотрите этот открытый тикет [игнорируется chmod # 60] (https://sourceforge.net/p/msys2/tickets/60/): «Статус: открыт» DavidPostill 7 лет назад 0
И этот [# 158 имеет проблемы с chmod и fstab] (https://sourceforge.net/p/msys2/tickets/158/): «Статус: wont-fix» DavidPostill 7 лет назад 0
Кроме того, разве ваша команда не должна быть `chmod + x foo`? DavidPostill 7 лет назад 0
@DavidPostill: извините, просто опечатка: исправлено `+ x` antonio 7 лет назад 0
@DavidPostill: Я действительно прочитал ветку wont-fix по SF, прежде чем публиковать здесь. Похоже, что проблема не в разрешениях, а в неправильных библиотеках. В этой же теме разработчик MSYS2 [говорит] (https://sourceforge.net/p/msys2/tickets/158/#6e56) «chmod» работает для меня, когда я монтирую без noacl. ». Он повторяет то же самое [здесь] (https://sourceforge.net/p/msys2/tickets/60/#1d42). В качестве дополнительного теста я попытался также полностью удалить опцию `acl`, но безуспешно. antonio 7 лет назад 0

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

1
Boris Kolpackov

Хорошо, я потратил немало времени на это, поэтому позвольте мне сделать выводы:

Изменение fstab помогает, но вы должны chmod файл через путь, который проходит через точку монтирования. Другими словами:

mkdir /c/test # Outside MSYS2 root (/). cd /c/test touch foo chmod +x foo # works but presumably won't if inside MSYS root. chmod +x /c/test/foo # works and presumably will if inside MSYS root. chmod +x c:\test\foo # does not work -- go figure. 

Довольно умственно отсталый, если вы спросите мое скромное мнение. И решение кажется довольно простым: смените noacl на acl на всех монтируемых по умолчанию MSYS2 (корневое монтирование MSYS2 создается автоматически, и нет возможности перейти на acl с помощью fstab-коррекции: предположительно возможно с опцией монтирования override).

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