通过网络设置 NTFS ACL - 有没有更快的方法?

通过网络设置 NTFS ACL - 有没有更快的方法?

在我的环境中,我有几个项目涉及在多个文件服务器上运行 NTFS ACL 审核报告和各种 ACL 清理活动。我无法在服务器上本地执行这些活动的主要原因有两个:

1) 我无法本地访问服务器,因为它们实际上由另一家公司拥有和管理。

2)他们是SNAP NAS 服务器它运行经过修改的 Linux 操作系统(称为 GuardianOS),因此即使我可以获得本地访问权限,我也不确定是否有可用的工具来执行我需要的操作。

解决了这个问题后,我最终推出了自己的 ACL 审计报告工具,该工具将从指定的顶级路径开始递归文件系统,并会针对 ACL 上遇到的所有组/用户生成 HTML 报告,并显示权限在树下降过程中的变化。在开发此工具时,我发现网络开销是执行这些操作最糟糕的部分,通过多线程处理该过程,我可以实现更高的性能。

但是,我仍然找不到一个好的工具来执行 ACL 修改和清理。您的标准开箱即用工具(cacls、xcacls、Explorer)似乎是单线程的,并且在通过网络时会遭受严重的性能损失。

问题

有没有比 Explorer 或 CACLS 更快的工具可以通过网络执行 NTFS ACL 修改?

答案1

您的环境听起来有点奇怪(NTFS 在 Linux 上运行?) - 但是,如果您可以从另一个 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 更快......

祝你好运!

答案2

你可以看看 SetACL (http://setacl.sourceforge.net/)。它可作为 ActiveX 控件使用,因此您可以采用多线程方式将其与您的自定义代码集成。

答案3

这是一个旧帖子,但无论如何,我发现 powershell设置ACL远非速度恶魔,并且 VB 脚本替代品通常更快。

相关内容