NTFS权限详解
NTFS权限是作为一个Windows管理员必备的知识,许多经验丰富的管理员都能够很熟悉地对文件、文件夹、注册表项等进行安全性的权限设置,包括完全控制、修改、只读等。而谈论NTFS权限这个话题也算是老生常谈了,但是对于一些“新手”,还是会有一些不是非常清楚的地方,本文就针对NTFS权限的重点要素进行探讨,以给大家对于NTFS权限的内容有一个初步的了解。
【正文】
一、 用户和组
权限设置必然涉及的三要素为访问者、权限、被访问的对象,那么我们首先来看一下“访问者”这一要素。“访问者”其实就是我们常说的“用户和组”,用户是授予权限的最小单位,而组则可以看作是用户的集合,在Windows系统中,用户与组都是使用SID作为其唯一标识符,应用到NTFS权限上也是如此,实际上也是对这些SID进行权限的授予。
那么在这里我们先来了解一下在工作组环境中的Windows系统内置的一些具备特殊功能作用的用户和组。
名称 |
性质 |
特点描述 |
Administrator |
用户 |
所谓“超级管理员”,默认禁用。在系统默认的安全策略下,其不受UAC约束且将以管理员身份运行任何程序。鉴于这一特性将严重降低系统安全性,Microsoft不建议将其启用。 |
Administrators |
组 |
所有管理员帐户都是Administrators组的成员。在ACL中,针对管理员的权限设置,通常使用Administrators组进行分配。注意在UAC启用的情况下,非经提权,仅有Administrators组的拒绝权限会应用到普通管理员。 |
Users |
组 |
所有用户帐户都是Users组的成员。在ACL中,针对用户的权限设置,通常使用Users组进行分配。 |
Guest |
用户 |
来宾帐户,默认禁用。相较于普通用户帐户,来宾帐户受到更多限制。在于“控制面板\用户帐户和家庭安全\用户帐户\管理帐户”中启用来宾帐户后,此帐户也将被启用。 |
HomeGroupUser$ |
用户 |
家庭组用户帐户。用于实现家庭组简化的、安全的共享功能。在创建家庭组后,此帐户将被创建及启用。 |
TrustedInstaller |
特殊用户 |
可信任的安装程序,实质上其指代的是一种特殊的服务,与Windows Modules Installer服务关系很大。可通过直接输入名称NTSERVICE\TrustedInstaller将其添加到ACL中。 |
HomeUsers |
组 |
在ACL中,针对家庭组的权限设置,通常使用HomeUsers组进行分配。 |
Authenticated Users |
特殊组 |
是所有在本系统或域内有合法账户的用户的集合。 |
Everyone |
特殊组 |
所有用户的集合,无论其是否拥有有合法账户。 |
Creator Owner |
特殊组 |
创建对象或目前是对象所有者的用户的集合。实质上此组的作用是:当它存在于ACL中时,将同时将所有者用户帐户以设定的权限添加进ACL。 |
Owner Rights |
特殊组 |
此组的作用主要在于限制对象所有者隐性的查看、更改ACL的权限。 |
SYSTEM |
特殊组 |
本地系统。相当多的服务使用此身份运行,如Windows Search。 |
二、 NTFS权限
NTFS权限是基于NTFS分区实现的,通过对用户或组授予NTFS权限可以有效地控制用户对文件和目录的访问。对于NTFS磁盘分区上的每一个文件和文件夹,NTFS都存储了一个访问控制列表(ACL,Access Control Lists)。ACL中包含有那些被授权访问该文件或者文件夹的所有用户账号、组和计算机,还包含他们被授予的访问类型。为了让一个用户访问某个文件或文件夹,针对相应的用户账号、组,或者该用户所属的计算机,ACL中必须包含一个对应的入口,这样的入口叫做访问控制入口(ACE,Access Control Entries)。为了让用户能够访问文件或者文件夹,访问控制入口必须具有用户所请求的访问类型。如果ACL没有相应的ACE存在,Windows系统就拒绝该用户访问相应资源。
NTFS权限分为标准NTFS权限和特殊NTFS权限两大类。标准NTFS权限可以说是特殊NTFS权限的特定组合。特殊NTFS权限包含了在各种情况下对资源的访问权限,其组合限制了用户访问资源的所有行为。但通常情况下,用户的访问行为都是几个特定的特殊NTFS权限的组合或集合。Windows为了简化管理,将一些常用的特殊NTFS权限组合起来形成了标准NTFS权限,当需要分配权限时可以通过分配一个标准NTFS权限以达到一次分配多个特殊NTFS权限的目的。
如下列表就是标准NTFS权限和特殊NTFS的对应关系表。
标准NTFS权限 |
||||||
特殊NTFS权限 |
完全控制 |
修改 |
读取和执行 |
读取 |
写入 |
列出文件夹目录 |
遍历文件夹/运行文件 |
● |
● |
● |
● |
||
列出文件夹/读取数据 |
● |
● |
● |
● |
||
读取属性 |
● |
● |
● |
● |
||
读取扩展属性 |
● |
● |
● |
● |
||
创建文件/写入数据 |
● |
● |
● |
|||
创建文件夹/附加数据 |
● |
● |
● |
|||
写入属性 |
● |
● |
● |
|||
写入扩展属性 |
● |
● |
● |
|||
删除子文件夹及文件 |
● |
|||||
删除 |
● |
● |
||||
读取权限 |
● |
● |
● |
● |
● |
|
更改权限 |
● |
|||||
取得所有权 |
● |
针对以上权限设置,下表列出了其所起到的作用。
权限类型 |
权限名称 |
权限作用描述 |
标准NTFS权限 |
完全控制 |
用户可以修改、增加、移动和删除文件,以及它们相关的属性和目录。另外,用户还能改变所有文件和子目录的权限设置。 |
修改 |
用户能够查看和修改文件和文件属性,包括删除和添加目录文件或文件属性。 |
|
读取和执行 |
用户可以运行可执行文件,包括脚本。 |
|
读取 |
用户能够查看文件和文件属性。 |
|
写入 |
用户能够改写文件。 |
|
特殊NTFS权限 |
遍历文件夹/运行文件 |
用户可以通过文件夹到达其它文件或文件夹,即使这些文件夹没有遍历文件或文件夹的权限。只有在“组策略”管理单元中没有将“跳过遍历检查”用户权限授予用户组或用户时,遍历文件夹才会生效。(默认情况下,Everyone用户组拥有“跳过遍历检查”用户权限。) |
列出文件夹/读取数据 |
用户可以查看一个文件的内容和数据文件列表。 |
|
读取属性 |
用户可以查看一个文件或文件夹的属性,如只读和隐藏。(NTFS定义这些属性。) |
|
读取扩展属性 |
用户可以查看一个文件或文件夹的扩展属性。(扩展属性由程序定义,可能各不相同。) |
|
创建文件/写入数据 |
建立文件权限允许用户在文件夹内建立文件。(这个权限只应用于文件夹。)写入数据权限允许用户改写文件,覆盖现有内容。(这个权限只应用于文件。) |
|
创建文件夹/附加数据 |
建立文件夹权限允许用户在文件夹内建立文件夹。(这个权限只应用于文件夹。)附加数据权限允许用户修改文件末尾部分,但他们不能改变、删除或覆盖现有数据。(这个权限只应用于文件。) |
|
写入属性 |
用户可以修改文件或文件夹的属性,如只读或隐藏。(NTFS定义这些属性。) |
|
写入扩展属性 |
用户可以修改一个文件或文件夹的扩展属性。 |
|
删除子文件夹及文件 |
用户可以删除子文件夹及文件,即使该子文件夹及文件上没有删除权限。 |
|
删除 |
用户可以删除文件或文件夹。(如果用户在该文件或文件夹上没有删除权限,但是在其父级的文件夹上有删除子文件及文件夹权限,那么就仍然可以删除它。) |
|
读取权限 |
用户拥有文件或文件夹的读取权限,如完全控制、读取和写入。 |
|
更改权限 |
用户拥有文件或文件夹的变更权限,如完全控制、读取和写入。 |
|
取得所有权 |
用户可以取得文件或文件夹的所有权。文件的所有者总能改变这个文件的权限,不管文件或文件夹受到何种权限的保护。 |
在使用基于NTFS的ACL中,还涉及到应用范围,那就是在NTFS权限设置的时候的作用域了,如下表列出了相应的作用域。
权限作用域 |
只有该文件夹 |
此文件夹、子文件夹及文件 |
此文件夹和子文件夹 |
此文件夹和文件 |
仅子文件夹和文件 |
只有子文件夹 |
只有文件 |
但是在实际的权限配置中,由于继承、权限选项以及特殊组的存在,作用域的效果并不是绝对的。如下则为在高级权限设置中,会出现的一些权限选项:
选项名称 |
选项描述 |
包括可从该对象的父项继承的权限 |
以当前对象为子对象,在子对象及其父对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。去除该选项的勾选可以阻断继承关系。 |
使用可从此对象继承的权限替换所有子对象权限 |
以当前对象为父对象,在父对象及其子对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。 |
仅将这些权限应用到此容器中的对象和/或容器 |
作用域仅及于对象下的第一层文件/文件夹而不涉及更深层次的文件/文件夹。 |
替换子容器和对象的所有者 |
将对象中的所有文件/文件夹的所有者变更为当前对象的所有者。 |
三、 NTFS权限的使用法则
为了更好地应用和制度NTFS权限在设置的时候将产生的效果,我们需要了解一些NTFS权限的法则。
1、 权限的积累,即权限最大法则
用户对资源的有效权限是分配给该个人用户账户和用户所属的组的所有权限的总和。如果用户对文件具有“读取”权限,该用户所属的组又对该文件具有“写入”的权限,那么该用户就对该文件同时具有“读取”和“写入”的权限。当有拒绝权限时权限最大法则无效。
2、 文件权限高于文件夹权限
意思就是说NTFS文件权限对于NTFS文件夹权限具有优先权,当用户或组对某个文件夹以及该文件夹下的文件有不同的访问权限时,用户对文件的最终权限是用户被赋予访问该文件的权限。假设你能够访问一个文件,那么即使该文件位于你不具有访问权限的文件夹中,你也可以进行访问(前提是该文件没有继承它所属的文件夹的权限)。
3、 拒绝权限高于其他权限
拒绝权限可以覆盖所有其他的权限。甚至作为一个组的成员有权访问文件夹或文件,但是该组被拒绝访问,那么该用户本来具有的所有权限都会被锁定而导致无法访问该文件夹或文件。也就是说上面第一点的权限累积原则将失效。
4、 指定的权限高于继承的权限
即一个对象上对某用户/组的明确权限设置优先于继承而来的对该用户/组的权限设置。例如本来该用户继承自父文件夹有对其下子文件夹或文件有“拒绝”的权限,但是管理员在该子文件夹或文件上授予该用户有“允许”的权限,则该用户对该子文件夹或文件拥有“允许”的权限。结合继承、指定和拒绝、允许的条件,有如下的规则:指定拒绝 > 指定允许 > 继承拒绝 > 继承允许。
以上为一些权限设置应用的规则,当然,我们不必自己手动计算权限结果,而可以使用“有效权限”选项卡来自动计算某一用户/组的有效权限。但需要注意的是它并不会考虑UAC对权限分配的影响。