Windows文件系统安全inheritance是如何工作的?

我正在深入研究Windows文件/文件夹安全性的强大而复杂的世界。 我很了解它是如何工作的,并且可以做出一些有教育意义的猜测ACL / ACE机制是如何工作的。 我不确定的是inheritance标志/机制是如何实现的。

如果(说)一个文件夹对象具有设置的inheritance标志,做改变到父:

  1. 在更改父权限时,将其复制到所有受影响的子对象?
  2. Windows在需要的时候(例如检查权限)是否回到树上以确定inheritance权限?

我怀疑它是#1,就像更改大型文件系统根目录的安全权限一样,应用这些更改需要很长时间。 我假设Windows正在遍历所有文件和文件夹,检查inheritance标志并更改每个对象上的ACL / ACE。

我进一步假设这样做是为了提高性能 – 不断走上一个非常深的文件夹结构来获取根对象,因为这是权限被inheritance的地方,会对性能产生很大的影响。

干杯,罗伯。

根据你提到的“文件夹结构”,我猜你正在谈论NTFS权限inheritance。

正如你猜测的那样,NTFS权限inheritance实际上是一个巧妙的错觉,即在“可inheritance”ACL被修改或创build文件时,将“inheritance的”ACL明确地分配给对象。 这种行为被认为是有些(包括我)的缺陷 。 shell调用更改权限的API会导致这个“走”下来的深层文件夹层次结构,当您更改权限在这样的层次结构的根目录。 (当您为深层次的根目录添加了不可inheritance的权限,但是在shell将控制权返回给您之前,您必须等待“walk”权限才能完成),那么这种行为就显得尤为糟糕。

我不知道这个devise决定背后的原理是什么,除了说这种行为保留了与旧版本NTFS的一定程度的兼容性,并且因为这样可能更容易实现这个机制(更less的angular落案例) 。 我的理解是,例如,Netware文件系统实际上实现了inheritance权限的实时计算,而不是像NTFS那样显式标记“未完成”的ACL。 我想说的是,Netware文件系统certificate了这样一个实时计算的权限模型有效地实现了合理的性能。