View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003730 | Far Manager | Editor | public | 2019-08-08 13:23 | 2019-08-10 10:50 |
Reporter | rdavidiuk | Assigned To | DrKnS | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x64 | OS | Windows | OS Version | 10 |
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0003730: Неверные права доступа к файлу, сохранённому из Редактора | ||||
Description | Проблема возникла после обновления от Build 5400 до Build 5445. Раньше этой проблемы не было. У меня в корне диска C: есть текстовый файл, который я часто изменяю Редактором (F4). Этому файлу установлены права доступа (ACL), позволяющие всем пользователям писать в него (фактически пользователь один - я, с правами Администратора). После обновления Far до Build 5445, в Редакторе (F4) при сохранении (F2) этого изменённого файла появляется диалог, предлагающий повысить привилегии для открытия файла:
В более ранних Билдах такое сохранение происходило сразу, без этого запроса.Поскольку имя файла в диалоге не то, что я редактирую, а временное, но директория та же, то я предполагаю, что Редактор Far'а сохраняет сначала в этот временный файл, а затем исходный файл удаляет и временный файл переименовывает в имя редактируемого файла. Если в этом диалоге я соглашаюсь повысить привилегии, то сохранение происходит, но результирующий файл имеет ACL, унаследованный от содержащей его директории (C:\), с ограничениями. Полагаю, что для устранения этой проблемы временный файл нужно создавать с таким же ACL, как и редактируемый, но кроме этого нужно ещё и преодолеть ограничение на создание файла в целевой директории (C:\). А может, проще (в ущерб наверное безопасности) делать сохранение непосредственно в редактируемый файл? | ||||
Steps To Reproduce | Директория C:\ должна иметь стандартные для неё права доступа, которые устанавливаются при инсталляции Windows. В корне диска C: создать небольшой текстовый файл и дать всем (Everyone) права доступа на запись (и чтение, или Full control) в него. Открыть этот файл Редактором Far'а (F4) и попытаться выполнить сохранение (F2). Увидим запрос Far'а на повышение привилегий, которого не должно быть. Дать согласие на повышение, ответить запросу UAC. После сохранения проверить права доступа к результирующему файлу, они теперь содержат ограничения, унаследованные от C:\. | ||||
Tags | No tags attached. | ||||
Build | 5448 | ||||
|
> Редактор Far'а сохраняет сначала в этот временный файл, а затем исходный файл удаляет и временный файл переименовывает в имя редактируемого файла Да. При этом используется функция Windows ReplaceFileW, которая должна корректно переносить и права доступа, но в вашем случае что-то пошло не так. > временный файл нужно создавать с таким же ACL, как и редактируемый Как правило не нужно (см. выше), но и повредить вроде не должно. 5448. > (в ущерб наверное безопасности) делать сохранение непосредственно в редактируемый файл До недавнего времени так и было, да. Файлы иногда портились безвозвратно (см. 3712). Начиная с 5448 вы можете вернуть старое (небезопасное) сохранение: far:config Editor.SaveSafely = false |
|
Теперь, с 5448 и Editor.SaveSafely = false описанное проблемное сохранение выполняется успешно. Спасибо. |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-08-08 13:23 | rdavidiuk | New Issue | |
2019-08-08 14:14 | DrKnS | Assigned To | => DrKnS |
2019-08-08 14:14 | DrKnS | Status | new => assigned |
2019-08-08 19:49 | DrKnS | Status | assigned => feedback |
2019-08-08 19:49 | DrKnS | Note Added: 0016568 | |
2019-08-08 19:50 | DrKnS | Note Edited: 0016568 | |
2019-08-08 19:51 | DrKnS | Note Edited: 0016568 | |
2019-08-09 09:45 | rdavidiuk | Note Added: 0016569 | |
2019-08-09 09:45 | rdavidiuk | Status | feedback => assigned |
2019-08-10 10:50 | DrKnS | Status | assigned => closed |
2019-08-10 10:50 | DrKnS | Resolution | open => fixed |
2019-08-10 10:50 | DrKnS | Fixed in Version | => 3.0 |
2019-08-10 10:50 | DrKnS | Build | => 5448 |