我们在 NTFS 文件系统上有一个大型目录树 (9TB)。树的根目录,例如G:\TreeRoot
,具有重复的显式权限。例如,执行ICACLS G:\TreeRoot
显示
G:\TreeReoot OURDOMAIN\SOME_GROUP:(OI)(CI)(N)
OURDOMAIN\SOME_GROUP:(OI)(CI)(N)
OURDOMAIN\SOME_USER:(OI)(CI)(N)
OURDOMAIN\ANOTHER_GROUP:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
请注意,第一个条目是重复的。我们想删除重复的条目。是否可以只删除其中一个条目而不删除第二个条目?使用 GUI 检查安全权限确实不是显示两个条目。使用icacls G:\TreeRoot /remove:d OURDOMAIN\SOME_GROUP
将删除两个条目,并需要重新添加(拒绝)权限。(这不是一个选项,原因有二:第一,在树上添加和删除权限大约需要 10x2=20 小时,第二,在此期间,目录将处于不受保护的状态,这两者都不是选项)。
答案1
我发现了一个稍微违反直觉的“解决方案”来应对这种情况:在资源管理器中添加相同的(已经重复的)ACL 实际上清理了生成的 acl,从而使重复项消失。
答案2
我正在研究如何清理与您的情况不太匹配的 NTFS 的另一个混乱情况,并且我怀疑您现在可能已经解决了它或继续前进了,但是以防万一您仍在处理此问题,这里有一件稍微出乎意料但值得尝试的事情。
为了概念验证,我最初建议在 G:\treeroot\some\deep\folder 上尝试此操作,这样您就不必等待整个树中“修复”此问题......
您提到,Explorer UI 未显示重复的权限。因此,如果您告诉 Explorer 删除它需要的任何权限,能看看,它是否遗漏了另一个?尝试此操作后,Explorer 和 iCacls 显示什么?
如果结果看起来“合理”,那么你可以谨慎地继续在 G:\TreeRoot 应用相同的方法