1) 我无法在本地访问这些服务器,因为它们实际上由另一家公司拥有和管理。
SNAP NAS servers
解决了这个问题后,我最终滚动了自己的ACL审计报告工具,该工具将从指定的顶级路径开始在文件系统中递归,并将在ACL上遇到的所有组/用户上吐出HTML报告,并在树中显示权限的变化。在开发这个工具时,我发现网络开销是执行这些操作最糟糕的部分,通过多线程处理,我可以实现更高的性能。
然而,我仍然坚持要找到一个好的工具来执行ACL修改和清理。您的标准开箱即用工具(cacls、xcacls、Explorer)似乎是单线程的,在网络上运行时会受到严重的性能损失。我曾考虑过推出自己的ACL设置程序,该程序是多线程的,但我熟悉的唯一API是。NET FileSystemAccessRule的东西,问题是,如果我在一个文件夹上设置权限,它会自动希望“向下流动”权限。这会导致一个问题,因为我想使用多线程自己进行“流动”。
1) 是否有一种方法可以设置一个适用于当前文件夹和所有子文件夹的ACL(您的标准“适用于文件、文件夹和子文件夹”ACL),但不会自动向下传递到子对象?基本上,我希望能够告诉Windows“是的,这个ACL应该应用于子对象,但现在,只需直接在这个对象上设置它”。
2) 有人知道以多线程方式执行ACL修改的任何好的算法或方法吗?我的直觉是,理论上任何对文件系统的递归遍历都应该有效,特别是如果你只是在顶级文件夹上定义一个新的ACL,并且只是想“清理”所有子文件夹。您可以在顶层标记新的ACL,然后向下递归删除任何显式的ACE,然后向下“流动”继承的权限。
(仅供参考,这个问题是
partially duplicated
来自ServerFault,因为这实际上既是一个系统管理员问题,也是一个编程问题。关于另一个问题,我问是否有人知道任何可以在网络上快速设置ACL的工具。)