Bug 1287

Summary: Нет доступа к файлу, если пользователь не является владельцем
Product: WINE@Etersoft Reporter: Константин Кондратюк <kondratyuk>
Component: ОбщееAssignee: Константин Кондратюк <kondratyuk>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: lav
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 692, 777, 1115    

Description Константин Кондратюк 2008-03-05 11:16:44 MSK
Попытка обратиться к доступному файлу (644) в доступной директории (775) заканчивается ошибкой. При этом пользователь является владельцем и директории, и файла.
Пример проявления - установка MSI в #1115 баге.
Comment 1 Vitaly Lipatov 2008-03-05 12:37:36 MSK
Ну так пример команды, и кусок WINEDEBUG=+file
Comment 2 Константин Кондратюк 2008-03-05 13:48:32 MSK
Для воспроизведения баги нужно два пользователя, входящие в группу wineadmin, и общее окружение, созданное с помощью административной установки.

При выполнении c:\windows\downloads\InstMsiA.exe одним из пользователей возникает ошибка. После удаления c:\windows\Installer\, содержимого c:\windows\temp и c:\Config.Msi установка начинает проходить.

Ошибок в трейсах по +file нет, из непонятных явлений - только закрепляющий бит на temp, но снятие его ситуацию не исправляет.
Comment 3 Константин Кондратюк 2008-03-05 15:06:27 MSK
Всё дело в том, что проблемные директории может изменять только владелец файла. После chown на все директории отдельно или на весь /var/lib/wine/default сразу проблема уходит (от одного пользователя к другому).
Comment 4 Константин Кондратюк 2008-03-05 18:35:21 MSK
Ошибка кроется в функции SetFileAttributesW(), в которую передаётся флаг 6 (HIDDEN и SYSTEM)

Разбор функции показывает, что отсюда возвращается не STATUS_SUCCESS:
status = NtSetInformationFile( handle, &io, &info, sizeof(info), FileBasicInformation );
Comment 5 Константин Кондратюк 2008-03-05 19:59:47 MSK
Патч отправлен в wine-patches@, после его принятия закрою багу.
Comment 6 Константин Кондратюк 2008-03-07 09:47:38 MSK
Пока приложил к нашему patches.list.
Comment 7 Константин Кондратюк 2008-11-01 13:46:15 MSK
*** Bug 371 has been marked as a duplicate of this bug. ***
Comment 8 Константин Кондратюк 2008-11-01 13:47:14 MSK
В wine не приняли, у нас в сборке исправление успешно работает.