В моей сети есть сервер Windows 2008 R2 с сетевым именем Dax
. На этом сервере у меня есть (среди прочего, конечно):
E:\
E:\odo
\\Dax\odo
который предоставляет папку E:\odo
в сетьDax\Backup
Пользователь Dax\Backup
является членом Dax\Backup Operators
группа и дополнительно имеет полные разрешения на общий ресурс \\Dax\odo
а также на папке E:\odo
.
У меня также есть несколько клиентских компьютеров под управлением Windows 10 x64 Enterprise (версия 1809). На каждом клиентском ПК есть
Client\Backup
который имеет тот же пароль, что и учетная запись сервера Dax\Backup
, и который также является членом соответствующего клиента Client\Backup Operators
группа.На клиентских ПК у меня есть программное обеспечение, которое может скопировать всю папку данных, упомянутую выше, включая все разрешения, информацию о владельце, альтернативные потоки, соединения и т. \\Dax\odo
. Я разрешаю этому программному обеспечению работать под учетной записью пользователя Client\Backup
так что он может читать папку данных независимо от действующих там 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
при обработке сетевого трафика от имени этого пользователя? Если да, то как?
P.S. Если моя вышеупомянутая теория глупа, заголовок этого поста будет вводить в заблуждение, поэтому не стесняйтесь его исправлять ...
Ваша теория верна. Это поведение можно изменить в настройках реестра.
В
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
найти или создать DWORD
стоимость LocalAccountTokenFilterPolicy
и установите его на 1. После этого вам может потребоваться перезагрузка.
Это позволит удаленным подключениям иметь неограниченный доступ администратора.