我对网络文件系统上的 ACL 有疑问。
基本上,我想在顶级文件夹对象上设置权限,该对象下面可能有 100,000 多个文件和文件夹对象。我希望该权限可通过所有子文件夹和子文件继承(IE“应用于文件、文件夹和子文件夹”为true)。
我不想废弃任何现有的可继承权限(即“用该对象的可继承权限替换所有子对象权限”为false)。
因此,当我运行 Set-ACL、SetACL.exe、XCACLS.vbs,甚至使用 Windows GUI 时,该过程需要很长时间才能完成 - 显然是由于子目录太大。
我现在已经习惯了,但是:
我想知道 - 为什么到底会这样?
归根结底,我不是只在一个文件夹对象上编写一个 ACE 吗?
- 我没有遍历目录;
- 我不会修改子文件和文件夹上的各个 ACL(我不这么认为);和
- 我不会替换权限
我假设如果您访问子文件夹/文件对象,它会检查它的显式 ACE 以查看您是否有权限,如果您没有权限,它会检查是否有任何可继承的权限(来自父文件夹)对象)可能会为您提供访问权限。
那么,设置可继承权限是否也会导致将新的单独 ACE 写入每个子文件和文件夹,即使您在技术上只在顶层设置一个 ACE?
是否有任何方法可以在顶层设置 ACE,而无需使用命令来枚举整个子目录?我希望快速有效地处理大量文件和文件夹。
我希望这是有道理的。期待任何建议。
里斯。
最佳答案
继承权限(如显式权限)在标志位字段 ( more info ) 的安全描述符的位掩码中在文件夹/文件级别设置。这就是为什么在父文件夹级别设置传播到子文件夹(继承)的权限可能会很长,具体取决于有多少子文件夹受到影响。
基于此,答案是否定的:您无法在顶层设置 ACE,并且没有命令去枚举整个子目录。
您可以测试以编程方式在所有子项上设置显式 acl 是否比继承过程更快。
关于.net - 在大型网络文件系统上快速设置可继承的 ACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834269/