在我的环境中,我有几个涉及在多个文件服务器上运行NTFS ACL审计报告和各种ACL清理活动的项目。 我无法在服务器上本地执行这些活动有两个主要原因:
1)我没有本地访问服务器,因为它们实际上由另一家公司拥有和pipe理。
2)它们是运行修改后的Linux操作系统(称为GuardianOS)的SNAP NAS服务器 ,所以即使我可以获得本地访问权限,我也不确定是否有可用的工具来执行我所需要的操作。
这样一来,我就结束了自己的ACL审计报告工具,从一个指定的顶级path开始recursion文件系统,并将所有在ACL上遇到的组/用户的HTML报告吐出以及显示权限的变化,因为它下降了树。 在开发这个工具时,我发现networking开销是做这些操作最糟糕的部分,通过multithreading这个过程,我可以实现更高的性能。
但是,我仍然坚持find一个好的工具来执行ACL修改和清理。 您的标准开箱即用工具(cacls,xcacls,Explorer)似乎是单线程的,并且在通过networking时会受到显着的性能损失。
问题
有没有比Explorer或CACLS更快的工具在整个networking上执行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 /batch file中运行CACLS还是不行…
祝你好运!
你可以看看SetACL( http://setacl.sourceforge.net/ )。 它以ActiveX控件的forms提供,因此您可以将其与自定义代码以multithreading方式集成。
这是一个旧post,但是对于它的价值,我发现PowerShell的Set-ACL远不是速度恶魔,而且VB脚本的select通常更快。