我需要防止在文件夹复制期间发生 acl 替换,但我不知道该怎么做。我有两个存储库,源和目标具有不同的 acl。用户必须(使用 Windows 的文件资源管理器)将一些文件夹从源复制到目标,但我希望复制的文件夹继承目标 acl。现在我看到 acl 已从源复制并维护到目标。
如何让 Windows 资源管理器使用目标 acl 继承而不是原始 acl 将文件夹从源复制到目标?请注意,源和目标位于同一网络卷上。
谢谢
编辑
我发现如果我使用网络路径复制文件夹(例如 \\server\share\folder),一切都会按我需要的方式工作(文件夹继承目标 acl),问题仅在于我使用映射网络卷(例如 z:\share\folder)。
答案1
您所描述的期望行为实际上是所有 Windows 版本的默认行为。复制的文件和目录将在目标位置重新创建,并继承目标文件夹的权限。
主要有两种情况可能不会发生这种情况:
你的用户不是在复制,而是移动同一文件系统内的文件和目录。在这种情况下,文件系统 ACL 不会更改,因为“移动”操作只是重新写入文件系统中指向目标的指针,不会对 ACL(存储在不同的属性中)执行任何操作。可以通过在所有客户端计算机上将密钥
MoveSecurityAttributes
中的 (DWORD) 值设置为来更改此行为。请注意,要使 MoveSecurityAttributes 在较新版本的 Windows(从 Vista/Server 2008 开始)上运行,您需要安装修补程序,如中所述HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
0
MS KB 2617058:“MoveSecurityAttributes”注册表子项在 Windows 7、Windows Vista、Windows Server 2008 或 Windows Server 2008 R2 中不起作用。ForceCopyAclwithFile
您已通过将键设置HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
为 来更改 Windows 用户的资源管理器默认行为,以复制文件的权限1
。