理解继承权限

问:我有一个关于冲突权限继承的优先级问题。比如说有一个多层的文件夹结构,包含了三个文件夹:Folder 1包含Folder 2,Folder 2包含Folder 3。我授予Clerks对Folder 1的修改权限,Folder 2对Clerks拒绝完全控制,授予Clerks对Folder 3的读取权限。如果memo.doc这个文件位于Folder 3文件夹下并且没有在它的访问控制列表中明确指定访问权限,那么Clerks对memo.doc文件的访问权限是什么?

答:Clerks对文件memo.doc只有读取权限。拒绝权限覆盖了父文件夹或更高层父文件夹上的允许权限。

Windows是这样来计算对象上权限的:首先,Windows会检查该对象上明确定义的拒绝权限(非继承的)。如果有任何请求的权限拒绝了用户或用户所属的任何用户组,Windows都会拒绝请求并提示拒绝访问。

接下来,Windows会检查明确定义的允许访问权限。如果所有请求的权限都可以从该用户或用户组的访问控制项(ACE)中获得,那么Windows就允许访问并不再查看访问控制列表(ACL)的其余部分,即便其中包含了父文件夹继承而来的拒绝权限。

如果请求的权限有待填充,那么Windows就会查看从直接父文件夹继承的权限,先检查拒绝权限然后是允许权限,除非Windows能够发现可适用的拒绝权限来拒绝某个请求的权限,或是收集全了所有请求的权限,否则这一过程会从下个最近的父文件夹继续进行下去。如果Windows查到ACL的末尾仍然未能收集全所有的请求权限,Windows将拒绝访问请求。因此,拒绝权限只覆盖父文件夹或更高层父文件夹上定义的允许权限。定义在低一层父文件夹上或是明确定义在访问对象上的允许权限要大于更高层父文件夹上定义的拒绝权限。

分享到