Как заставить службу (или системный процесс) олицетворять * повышенный * вариант учетной записи пользователя?

В моей сети есть сервер Windows 2008 R2 с сетевым именем Dax, На этом сервере у меня есть (среди прочего, конечно):

  • жесткий диск, смонтированный как E:\
  • папка E:\odo
  • доля SMB \\Dax\odo который предоставляет папку E:\odo в сеть
  • учетная запись пользователя Dax\Backup

Пользователь Dax\Backup является членом Dax\Backup Operators группа и дополнительно имеет полные права на общий ресурс \\Dax\odo а также в папке E:\odo,

У меня также есть несколько клиентских ПК под управлением Windows 10 x64 Enterprise (версия 1809). Каждый клиентский ПК имеет

  • несколько учетных записей пользователей, которые отличаются от учетных записей пользователей на сервере (т. е. нет AD, клиентские ПК не присоединены к домену)
  • сложная и глубоко вложенная папка данных с тщательно созданными разрешениями, т. е. каждый пользователь на клиенте имеет доступ к различным частям (подпапкам) папки данных
  • учетная запись пользователя Client\Backup который имеет тот же пароль, что и учетная запись сервера Dax\Backupи который также является членом соответствующего клиента Client\Backup Operators группа.

На клиентских ПК у меня есть программное обеспечение, которое может скопировать всю папку данных, упомянутую выше, включая все разрешения, информацию о владельце, альтернативные потоки, соединения и т. Д. На общий ресурс. \\Dax\odo, Я позволил этой программе работать под учетной записью пользователя Client\Backup так что он может читать папку данных независимо от ACL, которые там действуют.

Действительно, папки, файлы, соединения и т. Д. (Т. Е. Фактическое содержимое папки с данными) копируются без каких-либо проблем, но настройка метаданных (например, ACL, владение) в месте назначения не выполняется.

Я хотел бы понять, почему, и, конечно, что я могу с этим поделать.

Мои мысли и тесты до сих пор:

  • Мое клиентское программное обеспечение копирует эти файлы и папки на общий ресурс сервера, работая как пользователь Backup, Поскольку этот пользователь (на сервере) находится в Backup Operators В группе не должно быть проблем с изменением метаданных во время копирования или даже после копирования файла или папки, потому что именно Backup Operators группа должна служить.

  • Если (на сервере) я сделаю пользователя Backup член Administrators группа, проблема сохраняется.

  • Если (на сервере) я даю пользователю Dax\Administrator полное разрешение на акцию \\Dax\odo а также для соответствующей папки E:\odoи если я запускаю клиентское программное обеспечение под учетной записью Client\Administrator (эта учетная запись также имеет один и тот же пароль на клиентах и ​​на сервере), проблема не сохраняется, и процесс работает как задумано.

Кроме того, я выяснил, что, по моему мнению, является причиной проблемы на сервере: используя монитор процессов Sysinternals, я увидел, что, очевидно, пользователь Backup на сервере или, точнее говоря, его олицетворение сетевым сервисом / системным процессом не имеет достаточных привилегий. По крайней мере, это то, что я хотел бы сделать из свойств события, показанных ниже:

High Resolution Date & Time:    04.05.2019 09:27:37,2077520
Event Class:    File System
Operation:  IRP_MJ_CREATE
Result: PRIVILEGE NOT HELD
Path:   E:\Odo\d-LSE\d\temp\test - 2019-05-04 09-27-40\bla.txt
TID:    2812
Duration:   0.0000581
Desired Access: Generic Write, Read Attributes, Write DAC, Write Owner, Access System Security
Disposition:    OpenIf
Options:    Complete If Oplocked
Attributes: n/a
ShareMode:  Read
AllocationSize: 0
Impersonating:  DAX\Backup

В последние несколько дней я также узнал, что для членов определенных групп (среди них Administrator а также Backup Operators) существует два токена: обычный и повышенный, где только последний допускает особые привилегии таких групп.

Итак (обратите внимание, что это просто наивное предположение, и я не являюсь экспертом в этой области): Может ли сетевой сервис / системный процесс на сервере выдавать себя за не повышенную версию учетной записи пользователя? Backup при обработке сетевого трафика от имени этого пользователя, и может ли это быть причиной проблемы? Могу ли я решить проблему, заставив сетевой сервис / системный процесс выдавать себя за повышенную версию учетной записи пользователя? Backup при обработке сетевого трафика от имени этого пользователя? Если да, то как?

PS Если моя приведенная выше теория глупа, название этого поста будет вводить в заблуждение, поэтому не стесняйтесь исправлять его...

1 ответ

Решение

Ваша теория верна. Это поведение можно изменить с помощью параметра реестра.

В

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

найти или создать DWORD значение LocalAccountTokenFilterPolicy и установите его в 1. Затем вам может потребоваться перезагрузка.

Это позволит удаленным подключениям иметь неограниченный доступ администратора.