Попытка обратиться к доступному файлу (644) в доступной директории (775) заканчивается ошибкой. При этом пользователь является владельцем и директории, и файла. Пример проявления - установка MSI в #1115 баге.
Ну так пример команды, и кусок WINEDEBUG=+file
Для воспроизведения баги нужно два пользователя, входящие в группу wineadmin, и общее окружение, созданное с помощью административной установки. При выполнении c:\windows\downloads\InstMsiA.exe одним из пользователей возникает ошибка. После удаления c:\windows\Installer\, содержимого c:\windows\temp и c:\Config.Msi установка начинает проходить. Ошибок в трейсах по +file нет, из непонятных явлений - только закрепляющий бит на temp, но снятие его ситуацию не исправляет.
Всё дело в том, что проблемные директории может изменять только владелец файла. После chown на все директории отдельно или на весь /var/lib/wine/default сразу проблема уходит (от одного пользователя к другому).
Ошибка кроется в функции SetFileAttributesW(), в которую передаётся флаг 6 (HIDDEN и SYSTEM) Разбор функции показывает, что отсюда возвращается не STATUS_SUCCESS: status = NtSetInformationFile( handle, &io, &info, sizeof(info), FileBasicInformation );
Патч отправлен в wine-patches@, после его принятия закрою багу.
Пока приложил к нашему patches.list.
*** Bug 371 has been marked as a duplicate of this bug. ***
В wine не приняли, у нас в сборке исправление успешно работает.