Windows:如何修复损坏的权限继承?

Windows:如何修复损坏的权限继承?

在我们的网络共享上,存在各种损坏的权限继承。

仅举一例:文件夹“D:\Shares\PublicRelations”对组“PublicRelations”和“HR”具有完全访问权限(均设置了完全继承)。但是文件夹“D:\Shares\PublicRelations\SomeTopic”缺少组“HR”的继承权限,尽管继承处于活动状态。

可能发生这种情况,当有人将“HR”添加到顶部文件夹并且由于某种原因传播失败时。

是否有任何工具可以自动修复此类问题?

理想情况下,我只需使用参数“D:\Shares”调用它即可。然后它将遍历所有目录并在必要时修复所有继承的权限。

答案1

icacls <folder> /t /reset将使用默认的可继承权限重置所有权限。

Technet 参考

答案2

我最终用 C# 编写了代码:

  • 获取SeBackupPrivilege和SeRestorePrivilege(允许用户在任何地方读写)。
  • 重写路径以使 Windows 处理长文件名(对于本地路径:前缀@“\\?\”)
  • 遍历目录树
  • 对于每个元素加载 ACL
  • 添加一条显式规则,然后再次将其删除。这会诱使库认为 ACL 已更改。
  • 编写 ACL
  • IO 库将在写入不变的 ACL 时修复继承问题。

我还实现了一个检查,看看是否需要修复。但要让它可靠地运行需要做一些工作:

  • 您需要正确解释传播和继承标志。
  • 有时,权限会在下行过程中合并,有时则不会。最后,我只是检查了它们的含义是否相同。
  • 处理特殊权限“GENERIC_(READ|WRITE|EXECUTE|ALL)”

它在 100 万个文件共享中发现并修复了大约 40,000 个错误。

相关内容