在我的环境中,我有几个项目涉及在多个文件服务器上运行 NTFS ACL 审计报告和各种 ACL 清理活动。我无法在服务器上本地执行这些活动的主要原因有两个:
1)我没有对服务器的本地访问权限,因为它们实际上是由另一家公司拥有和管理的。
2) 它们是运行经过修改的 Linux 操作系统(称为 GuardianOS)的SNAP NAS 服务器,因此即使我可以获得本地访问权限,我也不确定是否可以使用工具来执行我需要的操作。
解决了这个问题,我最终推出了自己的 ACL 审计报告工具,该工具将从指定的顶级路径开始向下递归文件系统,并将在 ACL 上遇到的所有组/用户吐出 HTML 报告以及显示权限的变化,因为它下降了树。在开发这个工具时,我发现网络开销是执行这些操作的最糟糕的部分,通过多线程处理,我可以实现更高的性能。
但是,我仍然坚持寻找一个好的工具来执行 ACL 修改和清理。您的标准开箱即用工具(cacls、xcacls、Explorer)似乎是单线程的,并且在通过网络时会遭受显着的性能损失。
问题
是否有任何比 Explorer 或 CACLS 更快的工具用于跨网络执行 NTFS ACL 修改?
您的环境听起来有点奇怪(在 Linux 上运行 NTFS?) - 但是,如果您可以从另一个 Windows 机器访问和修改 ACL,那么您是否考虑过使用 PowerShell?它具有简单的 get-acl 和 set-acl cmdlet,可以满足您的需求。
这是一篇关于做简单事情的 MS 文章:http: //www.microsoft.com/technet/scriptcenter/csc/tips/ps/acl.mspx
PowerShell 的美妙之处在于它的灵活性,例如,您可以轻松读取一组所需的 ACL,可能带有一些规则,然后让 PowerShell 为您执行此操作...
唯一的事情就是性能 - 老实说,我不确定它是否会比在 CMD/批处理文件中运行 CACLS 更快......
祝你好运!
您可能会查看 SetACL ( http://setacl.sourceforge.net/ )。它可用作 ActiveX 控件,因此您可以将它与您的自定义代码以多线程方式集成。
这是一篇旧文章,但就其价值而言,我发现 powershell Set-ACL远非速度恶魔,而且 VB 脚本替代品通常更快。