NTFS权限概述
在之前学习的权限中,主要是应用层面的,例如远程访问权限,打印机使用权限,创建用户及修改密码权限等等。本篇要介绍的NTFS权限,是针对文件、文件夹而言的。其主要用途如下:
- 实现不同用户访问不同对象(文件、文件夹)的权限
- 给不同用户分配访问资源的权限(分配了正确的访问权限,用户才能访问其资源)
- 防止资源被篡改、删除
文件系统概述(实验环境:Windows7)
文件系统即在外部存储设备上组织文件的方法。这种说法比较抽象,后面会有具体的例子助于理解。在Windows系统中,选择任意磁盘,右击属性,可以看到当前磁盘所使用的文件系统是什么,若分区不建立文件系统,则无法存储文件,磁盘可以看作是建立了文件系统后的分区。
常用的文件系统
下面是常用文件系统以及主要使用它们的操作系统:
1 | 1.FAT Windows |
格式化
我们经常提到的格式化是什么?例如经常说 “将U盘格式化,这样就能清空U盘了” 。实际上,格式化的本质就是制作文件系统。用一种比较形象的话来说就是,将分区内容抹除,再重新打格子(block),可以理解为excel表格那样,每个格子大小通常为4KB(可以设置成别的大小)。例如要保存一个10KB的文件,就需要3个block,前2个占满,后1个占一半。如下图所示,Windows默认格式化为NTFS格式,默认一个block的大小是4KB。
当然除了用来存储内容的block,还有一个用来记录每个文件信息的主文件表(MFT:Master File Table),包括MFT本身,至少都有一个条目。有关文件的所有信息,包括文件的大小,时间和日期戳,权限和数据内容,都存储在MFT条目中或MFT条目描述的MFT外部空间中。随着文件添加到NTFS文件系统卷中,更多的条目将添加到MFT中,并且MFT的大小会增加。从NTFS文件系统卷中删除文件时,它们的MFT条目被标记为空闲,可以重复使用。但是,已分配给这些条目的磁盘空间不会重新分配,并且MFT的大小不会减少。其内部格式大致如下:
老师在课程中提到的inode,是属于Linux文件系统中的概念,在Windows的NTFS文件系统中起到类似功能的就是上面提到的MFT。
NTFS相比FAT的优势
在早期的Windows系统中,主要使用的是FAT32文件系统,现如今都替换成了NTFS文件系统,相比于FAT32,NTFS有以下几点优势:
提高磁盘读写性能
可靠性高:
提高磁盘利用率:
支持单个文件大于4个G,FAT文件系统是不支持大于4个G的单个文件的,因此有时会发现电脑中文件无法拷贝到U盘里,一个可能的原因是U盘格式化成了FAT文件格式。当然,一般16G以下的小型U盘,更建议格式化为FAT,效率更高。
修改NFTS权限(实验环境:Windows7)
权限的含义
修改NTFS权限,实际上就是修改文件(或文件夹)访问控制列表,那什么是访问控制列表呢?概括来讲,就是当前用户对该文件(或文件夹)所拥有的权限列表。它可以控制用户(或组)对文件(或文件夹)的行为,例如修改,删除,查看等。下面来看一下访问控制列表包含哪些权限:
文件权限 | 权限内容 |
---|---|
完全控制 | 拥有读取、写入、修改、删除文件、及特殊权限 |
修改 | 拥有读取、写入、修改、删除文件的权限 |
读取和执行 | 拥有读取、及执行文件的权限 |
读取 | 拥有读取文件的权限 |
写入 | 拥有修改文件内容的权限 |
特殊权限 | 控制文件权限列表的权限 |
文件夹权限 | 权限内容 |
---|---|
完全控制 | 拥有对文件及文件夹读取、写入、修改、删除文件、及特殊权限 |
修改 | 拥有对文件及文件夹读取、写入、修改、删除文件的权限 |
读取和执行 | 拥有对文件夹中的文件下载、读取、及执行文件的权限 |
列出文件夹内容 | 可以列出文件夹的内容 |
读取 | 拥有对文件夹中的文件下载、读取文件的权限 |
写入 | 拥有在文件夹中创建新的文件的权限 |
特殊权限 | 控制文件夹权限列表的权限 |
权限继承
在了解了访问控制列表中各个权限的含义后,下面开始介绍NTFS权限的一些属性,首先要说到的是权限继承。这个比较好理解,就是任一文件夹下的所有文件的访问控制列表会继承该文件夹自身的访问控制链表,包括设置的组。如下图所示,在文件夹1目录下,新建文件a.txt,图像b.png,文件夹c,可以看到,文件夹1目录下的文件(或文件夹)均继承了文件夹1的访问控制列表的权限以及用户组(注:文件是没有列出属性的)
继承这一点很好理解,继承是默认进行的,但同样可以取消继承,操作如下所示,进入安全->高级->更改权限,将包括可从该对象的父项继承的权限上的勾去掉,此时会跳出一个警告,让你选择添加/删除。如果选择删除,就把这些组全删了;所以选择添加,则可以自由删减。
这里将Administrators以外的组都删掉了,此时Administrators组以外的用户都无法访问文件夹c了。这样通过取消继承,可以达到控制用户对文件夹的访问限制。
这里再补充一点,权限继承除了适用于当前分区(例如C盘)创建的文件(文件夹),同样适用于复制或移动进来的文件。只有同分区移动文件(文件夹)不会被修改访问控制列表,其它情况与创建文件(或文件夹)是一样的。
权限累加
前面看到访问控制列表,它既可以是用户的权限,也可以是组的权限。如果一个用户被单独设置了权限,而它又位于一个或多个组中,那么最终的权限是怎样的呢?答案就是权限累加,将用户自己的权限与所有组的权限加在一起,就是这个用户的最终权限。(这个实验比较简单,就不演示了)
权限剔除
设想这样一个场景,公司中有一个工作组, 但是组里有一个员工是刺头,文件夹里有一个机密文件不想让这个刺头看到,那该怎么办呢?又不能把这个工作组都删掉,这样其它员工也就看不了。这时就要用到另一个机制,权限剔除。权限剔除的原理在于权限累加的过程中,拒绝是大于允许的。下面来看实验:
进入文件夹,先按照前面取消权限继承的步骤,令机密文件的访问控制列表取消对父文件夹的继承。这样就可以自行修改访问控制列表。
然后查看机密文件的ACL,发现User组中的成员是有读取和执行这个文件的权限的。并且刺头用户User0x1也位于Users组中。
为了不影响Users组中其它用户的正常权限,需要把用户User0x1权限单独列出来。右键机密文件属性->编辑->添加->高级->对象类型选择用户->立即查找,就可以看到所有用户,这里选择用户User0x1。
选择后,会显示
设备名\用户名的
形式,这种形式用来确定某一个用户或者组。现在来修改User0x1的权限,可以看到,此时User0x1的权限是允许读取和执行的,选择高级->更改权限->编辑,将原先允许的权限,全部更改为拒绝。
这时会跳出来一个警告,告诉你拒绝项优先于允许项,并且在权限项目列表中User0x1的类型也是拒绝。
可以看到User0x1此时的权限都是拒绝
这时再用User0x1去访问机密文件就会失败了,即使位于Users组中,但是由于拒绝项优先于允许项,还是会被拒绝访问。
取得所有权
这个时候,被限制访问的User0x1不高兴了,很没有面子,为了把面子找回来,它决定创建一个除了自己,谁都无法访问的文件。ACL里只有User0x1自己,拥有所有权限。
此时即使切换到了管理员,也无法访问这个文件。
这就很过分了对不对,作为管理员,怎么能访问不了用户的权限呢?进入属性->安全,发现竟然看不了ACL,但是没关系,点击继续,发现可以修改文件的所有者,我们将原有的文件所有者User0x1更改为Admin用户或者Administrators这个组。这样就可以对这个文件的ACL进行修改了。
结果,可以正常打开文件,并且在用户和组中删掉了用户User0x1,User0x1反而打开不了自己创建的文件了。
强制继承
什么是强制继承呢?前面介绍了取消权限继承,这导致文件夹1中各个文件的ACL可以自由修改以至于都不相同。
为了方便管理,管理员希望将这些文件重新恢复为取消继承之前的ACL,这里就要用到强制继承的功能了。右键文件夹1属性->安全->高级->更改权限->勾选使用可从此对象继承的权限替换所有子对象权限。(注意先让User0x1那个文件赋予Admin完全控制的权限),这样就可以让文件夹1中所有子文件(文件夹)均拥有与文件夹1一样的ACL。
修改完后查看两个文件,发现会和文件夹1的ACL相同。原来添加或删除的用户也不见了。这就是强制继承。
参考资料
参考教程:
- 千峰网络安全工程师课程
参考连接: