Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 84102|回复: 320

NTFS权限分析与应用     [复制链接]

Rank: 11Rank: 11Rank: 11

UID
660017
帖子
8271
PB币
1144
贡献
2
技术
140
活跃
33

I'm Surface用户

发表于 2010-11-18 16:06:34
本帖最后由 smalllion 于 2010-11-18 16:08 编辑

写在前面:鉴于文章较为冗长,急于直接了解NTFS权限相关问题的读者可以直接跳到章节六。然而我仍建议有时间的读者将前面的一些基础章节也阅读一番。




NTFS权限”,鉴于NTFS已经与我们亲密接触了如此长的时间,这个话题可以算是老生常谈了。然而在NT6.x大幅度改进了系统安全性后,作为安全重要环节的NTFS权限就不再是远离用户应用的技术。在实践中,部分用户由于特殊的应用需求可能需要对个别受保护的系统文件进行更改,不少用户可能会遇到NTFS权限设置错误导致的异常,而NTFS权限与UAC的结合也为我们的应用带来了更多可能性。要在不损害系统安全性的前提下实现我们的应用目标,就需要对NTFS权限的内容与配置方法有个初步的了解。是而为此文。

严格的说,NTFS权限的正式称谓是ACL(访问控制列表),因而在下文的陈述中也会逐步的引入ACL的概念。同时由于ACL广泛应用于系统权限控制中,因而本文所陈述的内容虽以NTFS权限为主,但可以类推于其他具备ACL特性的情景中,如注册表。



一、谈论ACL时不得不说的话题——用户与组

权限设置,必然是为授予某一群体对对象的访问权而设立,而用户与组正是这被授权的群体。用户是授予权限的最小单位,而组可以视作是用户的集合。用户与组都使用SID作为其唯一标识符。比起活动目录域中域本地组、全局组、通用组及其嵌套、转换所带来的多彩缤纷的应用相比,单机环境下的用户与组要简单得多。这里主要介绍一些具备特殊功能定位的用户与组。

l Administrator:用户。所谓“超级管理员”,默认禁用。在系统默认的安全策略下,其不受UAC约束且将以管理员身份运行任何程序。鉴于这一特性将严重降低系统安全性,不建议将其启用。

l Guest:用户。来宾帐户,默认禁用。相较于普通用户帐户,来宾帐户受到更多限制。在于“控制面板\用户帐户和家庭安全\用户帐户\管理帐户”中启用来宾帐户后,此帐户也将被启用。

l HomeGroupUser$:用户。家庭组用户帐户。用于实现家庭组简化的、安全的共享功能。在创建家庭组后,此帐户将被创建及启用。

l TrustedInstaller:特殊用户。可信任的安装程序,实质上其指代的是一种特殊的服务,与Windows Modules Installer服务关系很大。可通过直接输入名称NTSERVICE\TrustedInstaller将其添加到ACL中。

l Administrators:组。所有管理员帐户都是Administrators组的成员。在ACL中,针对管理员的权限设置,通常使用Administrators组进行分配。注意在UAC启用的情况下,非经提权,仅有Administrators组的拒绝权限会应用到普通管理员。

l Users:组。所有用户帐户都是Users组的成员。在ACL中,针对用户的权限设置,通常使用Users组进行分配。

l HomeUsers:组。在ACL中,针对家庭组的权限设置,通常使用HomeUsers组进行分配。

l Authenticated Users:特殊组。是所有在本系统或域内有合法账户的用户的集合。

l Everyone:特殊组。顾名思义,所有用户的集合,无论其是否拥有有合法账户。

l Creator Owner:特殊组。创建对象或目前是对象所有者的用户的集合。实质上此组的作用是:当它存在于ACL中时,将同时将所有者用户帐户以设定的权限添加进ACL

l Owner Rights:特殊组。此组的作用主要在于限制对象所有者隐性的查看、更改ACL的权限。

l SYSTEM:特殊组。本地系统。相当多的服务使用此身份运行,如Windows Search




二、可以做什么?——可以分配的权限

事实上当ACL被应用于不同的场景时,其有不同的权限可供分配。这里仅介绍基于NTFSACL权限分配可选项。

从类型上看,权限包括标准权限与特定权限。标准权限是由指定的特定权限与指定的作用域组成的。

基于NTFSACL中,标准权限有:

l完全控制(完全控制+遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除子文件夹及文件+删除+读取权限+更改权限+取得所有权)

l修改(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除+读取权限,作用域:此文件夹、子文件夹和文件)

l读取和执行(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹、子文件夹和文件)

l列出文件夹内容(遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹和子文件夹)

l读取(列出文件夹/读取数据+读取属性+读取扩展属性+读取权限,作用域:此文件夹、子文件夹和文件)

l写入(创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性,作用域:此文件夹、子文件夹和文件)

l特殊权限(其他特定权限与作用域的结合)



基于NTFSACL中,特定权限有:

l完全控制

l遍历文件夹/执行文件

l列出文件夹/读取数据

l读取属性l读取扩展属性

l创建文件/写入数据

l创建文件夹/附加数据

l写入属性

l写入扩展属性

l删除子文件夹及文件

l删除

l读取权限

l更改权限

l取得所有权



基于NTFSACL中,作用域有:

l只有该文件夹

l此文件夹、子文件夹及文件

l此文件夹和子文件夹

l此文件夹和文件

l仅子文件夹和文件

l只有子文件夹

l只有文件


但是在实际对权限的配置中,由于继承、权限选项与特殊组的存在,作用域并不是绝对的。


此外,“所有者”也可视为一种特殊的权限设置。所有者始终具备查看、更改对象的隐性权限(除非以Owner Rights进行限制)。任何管理员帐户或其他具备“取得所有权”权限的帐户都可以强行更改对象所有权。取得所有权是接管对象的重要步骤,具体的接管对象的方法则会在下面的文章中提到。


三、如何简化ACL配置?——权限选项

在高级权限设置(属性\安全\高级)中,我们可以遇到一些权限选项。权限选项对于简化对ACL的配置作用很大。这些权限选项包括:

l包括可从该对象的父项继承的权限:以当前对象为子对象,在子对象及其父对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。去除该选项的勾选可以阻断继承关系。

l使用可从此对象继承的权限替换所有子对象权限:以当前对象为父对象,在父对象及其子对象之间建立继承关系,并用父对象权限设置替换子对象权限设置。

l仅将这些权限应用到此容器中的对象和/或容器:作用域仅及于对象下的第一层文件/文件夹而不涉及更深层次的文件/文件夹。

l替换子容器和对象的所有者:将对象中的所有文件/文件夹的所有者变更为当前对象的所有者。



四、有效权限是如何计算的?——权限规则

权限规则很简单,仅仅两条:

1“指定”优先于“继承”

即一个对象上对某用户/组的明确权限设置优先于继承而来的对该用户/组的权限设置。例如:

现有文件夹folderAfolderA中有子文件夹folderBfolderBfolderA存在权限继承关系。对于用户UserfolderA拒绝其拥有写入权限,而folderB在继承而来的权限设置之外,还单独赋予User写入权限。此时,UserfolderB拥有写入权限。

2“拒绝”优先于“允许”

即当除规则1的情形外,对某用户/组同时赋予允许和拒绝权限时,拒绝权限优先。例如:

现有文件夹folderA及用户UserUser同时隶属于GroupAGroupB两个组。对于GroupAfolderA赋予其完全控制权限,对于GroupBfolderA拒绝其拥有写入权限。此时User不具备对folderA的写入权限。

当然,我们不必自己手动计算权限结果,而可以使用“有效权限”选项卡来自动计算某一用户/组的有效权限。但需要注意的是它并不会考虑UAC对权限分配的影响。

29

查看全部评分

Rank: 11Rank: 11Rank: 11

UID
660017
帖子
8271
PB币
1144
贡献
2
技术
140
活跃
33

I'm Surface用户

发表于 2010-11-18 16:07:04

五、系统是如何配置ACL的?——默认ACL分析

出于对安全性和易用性平衡的追求,系统分区默认即具备一整套严密的ACL配置。对部分典型默认ACL的分析,既可为我们解决权限相关问题打下基础,又可为我们实现基于权限控制的特殊应用需求提供范例。


  

C盘根目录

  
  

所有者:TrustedInstaller

  
  

权限分配

  
  

Administrators

  
  

完全控制

  
  

SYSTEM

  
  

完全控制

  
  

Users

  
  

读取和执行

  
  

Authenticated Users

  
  

特殊(应用于“仅子文件夹和文件”的遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除+更改权限 AND 应用于“只有该文件夹”的创建文件夹/附加数据)

  

C盘根目录的权限设置典型特征是,未提权的情况下,普通管理员仅可以创建文件夹或删除这些之后被创建的文件夹。提权后,普通管理员可以向C盘根目录写入、更改、删除文件。

在之前的文章中我们已经提到,启用UAC的情景下,非经提权,仅有Administrators组的拒绝权限会应用到普通管理员。这意味着C盘根目录中Administrators的完全控制权限对未经提权的普通管理员的权限分配没有作用。此时一个普通管理员的所拥有的权限实际上是Authenticated Users组与Users组权限的集合。当然,普通管理员可以通过提权而获得Administrators组的完全控制权限。但非经提权的程序将被拒绝向C盘根目录写入文件。


  

Program Files

  
  

所有者:TrustedInstaller

  
  

权限分配

  
  

SYSTEM

  
  

特殊(应用于“只有该文件夹”的遍历文件夹/执行文件+列出文件夹/读取数据+读取属性+读取扩展属性+创建文件/写入数据+创建文件夹/附加数据+写入属性+写入扩展属性+删除+读取权限 AND 应用于“仅子文件夹和文件”的完全控制)

  
  

Administrators

  
  

特殊(同SYSTEM

  
  

Users

  
  

读取和执行

  
  

Creator Owner

  
  

特殊(应用于“仅子文件夹和文件”的完全控制)

  
  

TrustedInstaller用户

  
  

特殊(同Creator Owner

  

Program Files是系统默认的程序安装文件夹,它单独设置了ACL而没有继承来自C盘根目录的权限。Program Files的权限设置典型特征与C盘根目录较为相似,但普通管理员除“读取和执行”外的操作都需要提权。


  

Windows\WinSxS

  
  

所有者:TrustedInstaller

  
  

权限分配

  
  

SYSTEM

  
  

读取和执行

  
  

Administrators

  
  

读取和执行

  
  

Users

  
  

读取和执行

  
  

TrustedInstaller用户

  
  

完全控制

  

Windows目录作为系统文件夹,重要性不言而喻,其ACL配置也更为复杂,大量使用非继承的权限配置设定对象权限。其中,WinSxS目录是一种典型的高强度权限设置状态。普通管理员不能对当中的文件、文件夹作任何添加、更改、删除,即便提权后也是如此(因为Administrators组也仅拥有“读取和执行”的权限)。


  

用户\Contoso

  
  

所有者:SYSTEM

  
  

权限分配

  
  

SYSTEM

  
  

完全控制

  
  

Administrators

  
  

完全控制

  
  

Contoso用户

  
  

完全控制

  

相对而言,用户文件夹的权限设置要宽松很多。比如在我们这里举例的名为Contoso的用户文件夹中,SYSTEM组、Administrators组与Contoso用户本身都享有对文件夹的完全控制权限。仅有其他用户试图访问此用户文件夹时才会收到权限不足的警告,不过对身为管理员的他们来说,为自己的帐户分配权限并不是什么难事。


从对默认ACL的分析不难看出,我们可以利用启用UAC时非经提权仅有Administrators组的拒绝权限会应用到普通管理员的特性来构建特殊的受保护文件夹。这类文件夹的特征是未经管理员批准(即提权),任何用户、程序不能对该文件夹的内容进行更改。具体的权限配置方法上,即是在用户所普遍隶属的Users组上设置普通权限(如读取和访问),而在Administrators组上设置高权限(如完全控制)。


六、自己动手,解决权限问题

针对NTFS权限相关问题,网络上往往流传着一些“一键取得管理员权限”的基于注册表的简易解决方案。诚然,这类解决方案在一定程度上简化了对NTFS权限相关问题的解决,但其副作用也很明显,如用户无法恢复原文件夹的ACL设置。当用户将这种解决方案应用到系统受保护的区域时,将可能引发安全性问题。事实上手动解决权限问题并不复杂,在解决的过程中,用户也可以更好的理解与应用NTFS权限。


例一:如何暂时性的获取对对象的相应操作权限?

一些时候(如美化),用户可能因为特殊需求而需要更改受保护的系统文件;另一些时候,用户可能需要移除卸载应用程序后的残留文件(如卸载Adobe Reader后其程序目录中所剩下的一些文件)。但当用户遇到权限不足的警告时,应当如何去临时性的获取对对象的相应操作权限呢?

首先,如果并非是要删除对象,那么请记录好原对象的ACL设置情况,如所有者、权限、继承等;

第二,将对象的所有者更改为当前用户,可以根据具体情况考虑是否替换子容器和对象的所有者;

第三,将当前用户添加到ACL中,为其分配适当的权限,可以根据具体情况考虑是否使用可从此对象继承的权限替换所有子对象权限;

第四,进行需要的操作;

第五,如果并非是要删除对象,那么请比照原对象的ACL设置情况恢复对象权限设置,如删除之后添加到ACL中的用户帐户、重新更改对象所有者等。

概而言之,强行设置所有者+为当前用户分配权限后,当前用户即可享有对对象的相应操作权限。


例二:如何去除对象上的小锁?

严格的说这并不是什么大问题,但鉴于经常有朋友提出需要修正这一问题,故而顺带谈一谈。对象上带有小锁图标,代表该对象设定了指定(而非继承)的权限,该权限表明对象在非提权的情况下专属于一个用户帐户。如在简单的通过快捷菜单将对象设置为“不共享”后,系统将为对象分配这样指定的权限。解决方案也很简单,既可以将对象设置为继承父对象权限(包括可从该对象的父项继承的权限),也可以比照同级对象配置对象权限。当然,并非所有具备小锁的对象都需要去修正,如用户文件夹的权限设置就具有指定的用户专属权限,这是由对象的定位决定的。


七、结语

这篇文章,算是我迄今为止构思最久、撰写最久也最为冗长的文章了。想将灵活多变的NTFS权限正确而有意义的表达并不是很容易的事,而我几乎可以肯定文章中存在着某些我暂时无法发现的谬误。我亦不能确定是否每位读者都会将冗长的全文通读(毕竟对用户最有意义的部分仅仅是章节六)。然而写作的过程也是一个自我提高的过程,我亦乐意与读者分享这提高的乐趣。

以上,5000字了吧。

点评

Pale_Cheung  用 Contoso 举例子,朋友是微软里做的?  发表于 2012-2-22 12:44
molai825  学习了  发表于 2012-2-20 21:06
7

查看全部评分

枯叶如蝶,凋零深秋

Rank: 15Rank: 15Rank: 15

UID
1469549
帖子
8696
PB币
2140
贡献
0
技术
0
活跃
29
发表于 2010-11-18 16:22:17
            来学习学习

哥是你挥之不去的曾经!

Rank: 9

UID
64996
帖子
1766
PB币
8152
贡献
0
技术
109
活跃
723

十一周年 十周年 9周年庆典勋章 8周年庆典勋章 7周年庆典勋章

发表于 2010-11-18 16:23:21
内容很优秀,很好的文章,谢谢分享

Rank: 5Rank: 5Rank: 5

UID
1446379
帖子
684
PB币
931
贡献
0
技术
0
活跃
99
发表于 2010-11-18 16:40:43
先标记,马上下班了,回家认真读

Rank: 5Rank: 5Rank: 5

UID
121413
帖子
829
PB币
2441
贡献
0
技术
0
活跃
689
发表于 2010-11-18 16:50:43
太强了 。。。。。来学习学习……

Rank: 2Rank: 2

UID
997417
帖子
50
PB币
82
贡献
0
技术
0
活跃
24
发表于 2010-11-18 17:44:53
很好很强大。来学习下

以百合的名义

Rank: 1

UID
786818
帖子
78
PB币
936
贡献
0
技术
0
活跃
9
发表于 2010-11-18 17:59:12
Linux里的权限管理比windows舒服太多了.....

Rank: 2Rank: 2

UID
1479583
帖子
45
PB币
321
贡献
0
技术
0
活跃
5
发表于 2010-11-18 18:00:36
楼主强大,威武啊

Mac OS X Lion

Rank: 5Rank: 5Rank: 5

UID
784726
帖子
637
PB币
1210
贡献
1
技术
22
活跃
54
发表于 2010-11-18 18:08:15
chapter6应该多一些应用实例。。

Mac OS X Lion

Rank: 5Rank: 5Rank: 5

UID
784726
帖子
637
PB币
1210
贡献
1
技术
22
活跃
54
发表于 2010-11-18 18:09:47
Linux里的权限管理比windows舒服太多了.....
Roderna 发表于 2010-11-18 17:59



    使用普通用户,你会发现很多操作都像linux一样要求你输入管理员密码。

UID
110389
帖子
3585
PB币
8609
贡献
3
技术
162
活跃
217
发表于 2010-11-18 18:15:02
小狮子的帖子一定要顶啊

Rank: 9

UID
626221
帖子
3393
PB币
1031
贡献
0
技术
2
活跃
163
发表于 2010-11-18 18:25:33
技术贴,慢慢看

Rank: 5Rank: 5Rank: 5

UID
1379522
帖子
1044
PB币
9333
贡献
0
技术
0
活跃
246

8周年庆典勋章

发表于 2010-11-18 18:57:41
太全面了,学习一下

UID
273396
帖子
218
PB币
2842
贡献
0
技术
0
活跃
7
发表于 2010-11-18 19:14:18
關於第六節例一中的第五個操作,恢復初始的權限設置這一行為必要性不大。一般來說,由於特殊原因需要替換系統文件的話,在替換一次後是有可能替換第二次,第三次的,每次都將權限設置恢復的操作量是比較大的,而保留修改後的權限對系統安全影響也很小。所以如果不是對安全性有特殊要求的話,我個人認為不將權限改回去比較好。

Rank: 2Rank: 2

UID
1267211
帖子
375
PB币
1525
贡献
0
技术
2
活跃
83

8周年庆典勋章

发表于 2010-11-18 19:15:28
技术贴 支持~学习了很多  也许现实中懂得这些的朋友不少,但是肯花时间分享给大家却不多  ~~
头像被屏蔽

Rank: 2Rank: 2

UID
628111
帖子
239
PB币
0
贡献
0
技术
0
活跃
3
发表于 2010-11-18 19:25:44
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
1450076
帖子
1091
PB币
4042
贡献
0
技术
0
活跃
133
发表于 2010-11-18 19:50:14
来支持了...精品文章啊

Rank: 11Rank: 11Rank: 11

UID
536934
帖子
4711
PB币
3075
贡献
0
技术
172
活跃
1581

活动参与先锋 Win10先驱者 7周年庆典勋章

发表于 2010-11-18 20:00:03
强文……
不过现在逐渐转向Linux(目前暂时使用RHEL6),而NTFS-3G对NTFS ACL是视之无物的,直接当作rwxrwxrwx处理。

Rank: 2Rank: 2

UID
992647
帖子
114
PB币
2475
贡献
0
技术
0
活跃
32
发表于 2010-11-18 20:21:31
学习了...............
关闭

站长推荐

推荐好友加入远景可拿奖励
推荐好友进远景,可以拿3重奖励,PBB,威望,勋章,通通有~ 本帖只限回复推荐用
回顶部
Copyright (C) 2005-2018 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件