严格的说,NTFS权限的正式称谓是ACL(访问控制列表),因而在下文的陈述中也会逐步的引入ACL的概念。同时由于ACL广泛应用于系统权限控制中,因而本文所陈述的内容虽以NTFS权限为主,但可以类推于其他具备ACL特性的情景中,如注册表。
一、谈论ACL时不得不说的话题——用户与组
权限设置,必然是为授予某一群体对对象的访问权而设立,而用户与组正是这被授权的群体。用户是授予权限的最小单位,而组可以视作是用户的集合。用户与组都使用SID作为其唯一标识符。比起活动目录域中域本地组、全局组、通用组及其嵌套、转换所带来的多彩缤纷的应用相比,单机环境下的用户与组要简单得多。这里主要介绍一些具备特殊功能定位的用户与组。
Administrator:用户。所谓“超级管理员”,默认禁用。在系统默认的安全策略下,其不受UAC约束且将以管理员身份运行任何程序。鉴于这一特性将严重降低系统安全性,不建议将其启用。
Guest:用户。来宾帐户,默认禁用。相较于普通用户帐户,来宾帐户受到更多限制。在于“控制面板\\用户帐户和家庭安全\\用户帐户\\管理帐户”中启用来宾帐户后,此帐户也将被启用。
HomeGroupUser$:用户。家庭组用户帐户。用于实现家庭组简化的、安全的共享功能。在创建家庭组后,此帐户将被创建及启用。
TrustedInstaller:特殊用户。可信任的安装程序,实质上其指代的是一种特殊的服务,与Windows Modules Installer服务关系很大。可通过直接输入名称NTSERVICE\\TrustedInstaller将其添加到ACL中。
Administrators:组。所有管理员帐户都是Administrators组的成员。在ACL中,针对管理员的权限设置,通常使用Administrators组进行分配。注意在UAC启用的情况下,非经提权,仅有Administrators组的拒绝权限会应用到普通管理员。
Users:组。所有用户帐户都是Users组的成员。在ACL中,针对用户的权限设置,通常使用Users组进行分配。
HomeUsers:组。在ACL中,针对家庭组的权限设置,通常使用HomeUsers组进行分配。
Authenticated Users:特殊组。是所有在本系统或域内有合法账户的用户的集合。 Everyone:特殊组。顾名思义,所有用户的集合,无论其是否拥有有合法账户。 Creator Owner:特殊组。创建对象或目前是对象所有者的用户的集合。实质上此组的作用是:当它存在于ACL中时,将同时将所有者用户帐户以设定的权限添加进ACL。
Owner Rights:特殊组。此组的作用主要在于限制对象所有者隐性的查看、更改ACL的权限。
SYSTEM:特殊组。本地系统。相当多的服务使用此身份运行,如Windows Search。
二、可以做什么?——可以分配的权限
事实上当ACL被应用于不同的场景时,其有不同的权限可供分配。这里仅介绍基于NTFS的ACL权限分配可选项。
从类型上看,权限包括标准权限与特定权限。标准权限是由指定的特定权限与指定的作用域组成的。
基于NTFS的ACL中,标准权限有:
完全控制(完全控制+遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除子文件夹及文件+删除+读取权限+更改权限+取得所有权)
修改(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除+读取权限,作用域:此文件夹、子文件夹和文件)
读取和执行(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹、子文件夹和文件)
列出文件夹内容(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹和子文件夹)
读取(列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹、子文件夹和文件)
写入(创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性,作用域:此文件夹、子文件夹和文件)
特殊权限(其他特定权限与作用域的结合)
基于NTFS的ACL中,特定权限有: 完全控制
遍历文件夹/执行文件 列出文件夹/读取数据 读取属性读取扩展属性
创建文件/写入数据 创建文件夹/附加数据 写入属性 写入扩展属性 删除子文件夹及文件 删除 读取权限 更改权限 取得所有权
基于NTFS的ACL中,作用域有: 只有该文件夹
此文件夹、子文件夹及文件 此文件夹和子文件夹 此文件夹和文件 仅子文件夹和文件 只有子文件夹 只有文件
但是在实际对权限的配置中,由于继承、权限选项与特殊组的存在,作用域并不是绝对的。
此外,“所有者”也可视为一种特殊的权限设置。所有者始终具备查看、更改对象的隐性权限(除非以Owner Rights进行限制)。任何管理员帐户或其他具备“取得所有权”权限的帐户都可以强行更改对象所有权。取得所有权是接管对象的重要步骤,具体的接管对象的方法则会在下面的文章中提到。
三、如何简化ACL配置?——权限选项
在高级权限设置(属性\\安全\\高级)中,我们可以遇到一些权限选项。权限选项对于简化对ACL的配置作用很大。这些权限选项包括:
包括可从该对象的父项继承的权限:以当前对象为子对象,在子对象及其父对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。去除该选项的勾选可以阻断继承关系。
使用可从此对象继承的权限替换所有子对象权限:以当前对象为父对象,在父对象及其子对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。
仅将这些权限应用到此容器中的对象和/或容器:作用域仅及于对象下的第一层文件/文件夹而不涉及更深层次的文件/文件夹。
替换子容器和对象的所有者:将对象中的所有文件/文件夹的所有者变更为当前对象的所有者。
四、有效权限是如何计算的?——权限规则
权限规则很简单,仅仅两条: 1、“指定”优先于“继承”
即一个对象上对某用户/组的明确权限设置优先于继承而来的对该用户/组的权限设置。例如:
现有文件夹folderA,folderA中有子文件夹folderB,folderB与folderA存在权限继承关系。对于用户User,folderA拒绝其拥有写入权限,而folderB在继承而来的权限设置之外,还单独赋予User写入权限。此时,User对folderB拥有写入权限。
2、“拒绝”优先于“允许”
即当除规则1的情形外,对某用户/组同时赋予允许和拒绝权限时,拒绝权限优先。例如:
现有文件夹folderA及用户User,User同时隶属于GroupA和GroupB两个组。对于GroupA,folderA赋予其完全控制权限,对于GroupB,folderA拒绝其拥有写入权限。此时User不具备对folderA的写入权限。
当然,我们不必自己手动计算权限结果,而可以使用“有效权限”选项卡来自动计算某一用户/组的有效权限。但需要注意的是它并不会考虑UAC对权限分配的影响。
因篇幅问题不能全部显示,请点此查看更多更全内容