在我的网络中,有一台网络名为 的 Windows 2008 R2 服务器Dax
。在该服务器上,我有(当然还有其他):
- 硬盘驱动器,安装为
E:\
- 一个文件夹
E:\odo
\\Dax\odo
将文件夹提供E:\odo
给网络的SMB 共享- 用户帐户
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。然后您可能需要重新启动。
这将允许远程连接拥有不受限制的管理员访问权限。