View Issue Details

IDProjectCategoryView StatusLast Update
0003866Far ManagerFile Systempublic2021-06-07 21:16
Reporteralexey_kovalenko Assigned ToDrKnS  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx64OSWindows 
Fixed in Version3.0 
Summary0003866: В каталог, доступный на запись только администраторам, после повышения прав отображется ошибка доступа.
DescriptionИмеется каталог, доступный на запись только с повышением прав, например, %ProgramFiles%
Far запущен от имени обычного пользователя.
Если внутри этого каталога открыть редактором файл, попытаться сохранить, то, после приглашения на повышение и ввода пароля появится сообщение об ошибке.
В зависимости от значения Editor.SaveSafely, либо сообщение о невозможности создать временный файл (far2.png), либо сообщение о невозможности записать файл (far1.png).

Аналогичное поведение при попытке распаковать в такой каталог из архива (fa3.png) или скопировать файл через SFTP (операция молча прерывается)

При запуске FAR в административной учётной записи (или через runas, ПКМ) такого поведения не наблюдается.
Steps To ReproduceЗапустить FAR от пользователя
открыть редактором файл %ProgramVFiles%\desktop.ini
попытаться сохранить
ввести пароль администратора
Additional InformationACL на файл с примеров
C:\Program Files>icacls nethasp.ini
nethasp.ini NT AUTHORITY\система:(I)(F)
            BUILTIN\Администраторы:(I)(F)
            BUILTIN\Пользователи:(I)(RX)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

ACL на каталог
C:\Program Files>icacls .
. NT SERVICE\TrustedInstaller:(F)
  NT SERVICE\TrustedInstaller:(CI)(IO)(F)
  NT AUTHORITY\система:(M)
  NT AUTHORITY\система:(OI)(CI)(IO)(F)
  BUILTIN\Администраторы:(M)
  BUILTIN\Администраторы:(OI)(CI)(IO)(F)
  BUILTIN\Пользователи:(RX)
  BUILTIN\Пользователи:(OI)(CI)(IO)(GR,GE)
  СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ:(OI)(CI)(IO)(F)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

ACL на другой каталог с такой же проблемой
C:\usr\local\aladdin\Monitor>icacls .
. NT AUTHORITY\Прошедшие проверку:(I)(OI)(CI)(RX)
  BUILTIN\Администраторы:(I)(F)
  BUILTIN\Администраторы:(I)(OI)(CI)(IO)(F)
  NT AUTHORITY\система:(I)(F)
  NT AUTHORITY\система:(I)(OI)(CI)(IO)(F)
  BUILTIN\Пользователи:(I)(OI)(CI)(RX)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

TagsNo tags attached.
Build5806

Activities

alexey_kovalenko

2021-05-27 13:48

reporter  

far.PML (566,937 bytes)
far1.png (16,467 bytes)   
far1.png (16,467 bytes)   
far2.png (17,826 bytes)   
far2.png (17,826 bytes)   
far3.png (46,172 bytes)   
far3.png (46,172 bytes)   
far4.png (42,124 bytes)   
far4.png (42,124 bytes)   
far5.png (40,713 bytes)   
far5.png (40,713 bytes)   
far8-runas.png (40,253 bytes)   
far8-runas.png (40,253 bytes)   

DrKnS

2021-05-27 17:17

administrator   bugnote:0017064

Не повторяется.
Не работает только с некоторыми каталогами или с любыми?

Px

2021-05-29 09:53

reporter   bugnote:0017065

На обычной 7-ке действительно не воспроизводится, после запроса пароля от учётной записи администратора файл успешно меняется.
На доменном Server 2012 R2 где запрещено повышение прав обычным пользователям ситуация похожа на описаную выше, но ошибка указана явно
╔═════════════════════════════ Editor ═════════════════════════════╗
║                       Cannot save the file                       ║
║                 C:\Windows\WindowsUpdate (1).log                 ║
╟──────────────────────────────────────────────────────────────────╢
║    Can't create a temporary file: 0x000004EC - Эта программа     ║
║ заблокирована групповой политикой. За дополнительными сведениями ║
║             обращайтесь к системному администратору.             ║
╟──────────────────────────────────────────────────────────────────╢
║                       { Retry } [ Cancel ]                       ║
╚══════════════════════════════════════════════════════════════════╝

alexey_kovalenko

2021-05-29 10:46

reporter   bugnote:0017066

Забыл СУЩЕСТВЕННУЮ деталь

Указанное поведение проявляется, когда у администраторов отсутствует право SeDebugPrivilege

DrKnS

2021-05-29 12:26

administrator   bugnote:0017067

Действительно, это оно.
Для работы с файлами привилегированный процесс открывает файл и копирует хендл в основной процесс, который с ним потом работает, как с обычным.
Для этого основной процесс надо открыть с PROCESS_DUP_HANDLE.
PROCESS_DUP_HANDLE позволяет косвенно получить полный доступ к процессу.
На той же странице пишут, что для полного доступа надо SeDebugPrivilege, так что, в принципе, логично, что и для PROCESS_DUP_HANDLE тоже.

Поэтому access denied на ваших скриншотах - это не про файл, это про процесс.

DrKnS

2021-05-29 17:31

administrator   bugnote:0017070

5806

alexey_kovalenko

2021-06-07 20:56

reporter   bugnote:0017079

Проверял на 5807 и 5814.
Ошибка исправлена.

Issue History

Date Modified Username Field Change
2021-05-27 13:48 alexey_kovalenko New Issue
2021-05-27 13:48 alexey_kovalenko File Added: far.PML
2021-05-27 13:48 alexey_kovalenko File Added: far1.png
2021-05-27 13:48 alexey_kovalenko File Added: far2.png
2021-05-27 13:48 alexey_kovalenko File Added: far3.png
2021-05-27 13:48 alexey_kovalenko File Added: far4.png
2021-05-27 13:48 alexey_kovalenko File Added: far5.png
2021-05-27 13:48 alexey_kovalenko File Added: far8-runas.png
2021-05-27 17:17 DrKnS Note Added: 0017064
2021-05-29 09:53 Px Note Added: 0017065
2021-05-29 10:46 alexey_kovalenko Note Added: 0017066
2021-05-29 12:26 DrKnS Note Added: 0017067
2021-05-29 17:31 DrKnS Assigned To => DrKnS
2021-05-29 17:31 DrKnS Status new => feedback
2021-05-29 17:31 DrKnS Note Added: 0017070
2021-06-07 20:56 alexey_kovalenko Note Added: 0017079
2021-06-07 20:56 alexey_kovalenko Status feedback => assigned
2021-06-07 21:16 DrKnS Status assigned => closed
2021-06-07 21:16 DrKnS Resolution open => fixed
2021-06-07 21:16 DrKnS Fixed in Version => 3.0
2021-06-07 21:16 DrKnS Build => 5806