现在你已知道如何实施帐号的安全,并已建立了一个有效的认证机制,接下来将实施安全中访问控制部分。访问控制必须在两个地方实施,即本地和远程。文件可以由用户在本地访问或通过网络进行远程访问。本课将对这两种方法逐一进行测试。
Windows NT文件系统安全
当建立文件的权限时,你必须先实现Windows NT的文件系统(NTFS),当然你也可以使用FAT格式,但是并不支持文件级的权限。FAT只在那些相对来讲,对安全要求较低的情况下使用。即使NTFS也不能认为是能完全地保护文件的,这一点在稍后的实验中你将会看到。
一旦已经实施了NTFS的文件系统格式,可通过Windows NT的资源管理器直接来管理文件的安全。使用NT资源管理器你可为设置目录或文件的权限。基于文件级的权限你可以分配下面几种:读取(R),写入(W),执行(X),删除(D),改变(P),取得所有权(O)。详细请参照下表:
NTFS权限 基于目录 基于文件
读取 (R) 显示目录名,属性,所有者及权限 显示文件数据,属性,所有者及权限
写入 (W) 添加文件和目录,改变一个属性以及显示所有者和权限 显示所有者和权限;改变文件的属性;在文件内加入数据
执行 (X) 显示属性,可进入目录中的目录,显示所有者和权限 显示文件属性,所有者和权限;如果是可执行文件可运行
删除 (D) 可删除目录 可删除文件
改变权限 (P) 改变目录的权限 改变文件的权限
取得所有权 (O) 取得目录的所有权 取得文件的所有权
为了简化权限的管理,NT有几种有关权限的标准。通常在分配权限的时候,往往是组合使用权限而不是使用单独的权限,这些权限如下表
标准权限 基于目录 基于文件
不可访问 无 无
列出 RX 不适用
读取 RX RX
添加 WX 不适用
添加和读取 RWS RX
更改 RWXD RWXD
完全控制 ALL ALL
在这些权限的基础上,你可以达到根据需要来访问控制。但是确定什么是你需要的最小权限是困难的。回顾一下第一课我们所讲的一个新建立的NTFS分区默认情况下everyone组对其有完全控制的权限。这种标准是无法接受的,如果你不加选择的删除everyone组或在任何地方都把不可访问的权限赋予给everyone组,那么有可能会损坏你的NT安装。Everyone组必须可以访问主要的系统目录(比如登陆目录)来使用户能够连接和登陆到服务器上。因为用户在开始登陆的过程中还没有被认证,你必须使用everyone组提供访问以使他们能够被认证。赋予everyone组不可访问其实更危险,因为拒绝访问优先于允许访问,而且所有的用户都是属于everyone组的,这样也就等于完全阻止了对文件系统的访问。
目录的权限分配和文件是一样的。目录的权限影响其目录中新建的文件。换句话说就是任何新建的文件将继承此目录的权限。
磁盘分区
因为操作系统目录的权限是非常严格的,把Windows NT放置自己单独的分区内是个明智的选择。在这个分区上只安装Windows NT而不安装应用程序使管理任务简单很多,一个磁盘分区可能会像下图这样。
操作系统 程序文件 数据
尽管这种分区需要额外地策划,但它还是很有吸引力,特别是简化了对于目录权限的管理。目录可以根据需要分开。如果 你在运行一个设备如WEB服务器,你可能会考虑使用Html,图像和其它一些静态文件在一个分区上,而你的脚本文件则放到另一个分区上。你可以将脚本设置成只可以执行那些静态文件可允许读取。这种策略的结果就是易于管理文件和目录的权限。
复制和移动文件
最后,你要理解当文件被复制和移动的时候发生了什么。每当一个文件被复制到一个新的目录里时,这个文件将继承目标目录的权限。当文件移动时,过程是很复杂的。如果一个文件从一个目录移动到同一分区下的另一个目录,那么此文件的权限将保留。当文件在相同的分区内移动时,Windows NT对于新目录的位置更新目录分配表。当文件在两个不同的分区间移动时,Windows NT首先把这个文件复制到新位置,在成功地复制之后,Windows NTG再删除掉原始的那个文件。一个新文件被建立后,将继承目标目录的权限。
远程文件访问控制
远程的访问一个文件或目录是通过共享权限来提供的。一个共享就是供远程用户访问文件的网络访问点。当配置这些共享时,你要设置相应的权限。共享权限的应用类似于在NTFS上权限的应用。主要的区别是共享权限缺乏精细地权限设置。你只能分配不可访问、读取、更改和完全控制的权限。参照下表
权限 允许
完全控制 改变文件的权限;在NTFS卷上取得文件的所有权;
能够完成所有,有更改权限所执行的任务
更改 创建目录和添加文件;更改文件内的数据;更改文件的属性;
删除目录和文件;能完成所有有读取权限执行的任务
读取 显示目录和文件名;显示文件数据和属性;运行应用程序文件
[1] [2] [3]
在目录里可转到另一目录
不可访问 仅能和共享目录建立连接,拒绝访问而且目录里的内容不可见
共享的权限和共享点一定要小心地分配。因为权限仅仅是分配给共享点的,任何共享点下的文件或目录都是以和共享点本身相同的权限被访问的。
结合使用本地和远程权限Windows NT权限的设计是要综合使用NTFS和共享权限。因为Windows NT的设计是作为一个服务器,用户很少直接访问文件。当然,共享的安全性对于需要更加安全是远远不够的,因此共享和远程都需要使用。当你结合使用共享和NTFS权限时,两者中最严格的权限优先使用。
UNIX文件系统安全
在UNIX领域里,所有的信息都是储存在文件里,并有一个相关的名字。文件是存储在目录中的,但UNIX仍把它看作是文件。本课的重点是UNIX文件系统是如何处理权限的。这些权限控制什么样的用户可以访问以及如何访问。文件系统已是强制UNIX系统安全的最基础的方法。
UNIX下的文件格式UNIX对于文件的读取和写入,是以像树状结构的方式维护的。很多年前,UXNI文件系统就支持长文件名和目录名。所有的文件都有i-节点或连接点;它包含一个文件所有的统计和后勤信息。一些数据包含:
·文件类型
·大小(以字节为单位)
·参考计数。如果有其它不同名字而实际上是相同的一个文件(叫做链接文件)
·拒绝地址列表指示器
·时间戳。比如文件最后一次访问的时间;文件内容最后一次被修改的时间等..
·安全相关字段:文件属主的UID及GID
·文件访问权限或位,也称做Mode bits。
Ls 命令是最常用的UNIX命令,用来查看文件和目录的权限。如下图显示
第一个命令ls –ld .意思是:列出当.下的内容通常.是指当前的目录;在本例中,用户自动地登陆到他的主目录中,而命令中的.是作为当前目录的意思
对于命令输出的结果详细说明见下表
输出符号
含义
d
表明目录
r
属主可以读取访问
w
属主有写权限
x
属主对目录有搜索及执行权限
R
属主所在组的用户有读取访问的权限(本例中是staff组)
-
属主所在组没有写权限
x
属主所在组对目录有搜索及执行权限
R
其它用户有读取权限(任何人)
-
其它用户没有写权限
X
其它用户对目录有搜索及执行权限
4
参考计数
test
属主的登陆名
Staff
属主用户所属于的组名
512
目录的大小(字节)
Time Stamp
最后一次改变大小的日期
08:41
改变时的时间
.
所有这些信息所属于的文件名
第二个命令ls –la .bashrc_profile如图输出的有关用户配置文件的信息,它的组成部分见下表
范围值
含义
-
普通文件
R
属主有读取访问权限
W
属主有写权限
-
属主没有执行权限
R
属主所在组有读取权限
-
属主所在组没有写权限
-
任何组都没有执行的权限
R
其它用户有读取权限(任何人)
-
其它用户有写权限
-
其它用户没有执行的权限
230
文件大小
Time Stamp
文件建立的日期。
第三个命令ls –la 123列出一个普通文件的权限。此文件在这里叫123。ls命令通常都是列出其属主和其它用户对此文件有什么样的特殊权限。
第四个命令ls –l /etc/rc.d/init.d/Linuxconf主要列出了linux重要配置文件linuxconf的权限。参照表3-6
文件值
含义
L
链接;文件指向另一个文件
Rwx
属主有完全控制的权限
Rwx
属主所在组有完全控制的权限
[1] [2] [3]
Rwx
所有其它用户有完全控制的权限
1
参考计数(说明是唯一的文件)
Root
此文件真正的所有者
Root
文件所属的组名
43
文件大小(字节)
Time Stamp
文件首次建立的日期
->
用来说明真正文件的链接或符号
/usr/lib/linuxconf/redhat/scripts/linuxconf
说明文件的物理位置
现在你已经理解了在UNIX下的文件或目录不同模式位所代表的含义,下面我们将用不同的方法来改变它们。
通常对普通文件默认的权限是666(属主、所在组及其它用户有读取和写入的权限)。每个位(八进制值)都分配给文件的三个组成部分(属主、所在组及其它用户)。对于一个可执行的程序默认的权限可能是777(对所有的用户都是有读取、写入和搜索执行的权限)。
Umask命令默认的”mask”为022,通常与文件的模式位相AND来改变,比如对一个默认权限为0666的文件作AND得到最后的模式位为0644,也就是最后文件的权限为属主有读、写权限,所在组和其它用户有只读的权限。
在一个站点中的所有的用户都期望保护他们自己的数据,默认情况下,是由其它用户来检查的,所有的用户都应该有一个UMASK值为077。如果用户需要和所在组的用户协同完成项目时,那么umask值为037是最佳的选择。
The chmod 命令
Chmod命令是用来操纵文件权限的。这个命令可以以两种方法来应用
· 绝对模式:当使用这种方法时,命令是这样的
chmod 666 filename
这里,权限的模式位已经被绝对地应用到了文件上。应用到不同组成部分上的权限(如属主,组,其它用户)取决于输出的模式位,请参考表3-4
· 符号模式:当使用这种方法时,命令是这样的
chmod a+rwx filname
这里,对于些文件所有用户的权限都是可以读取、写入及执行。因为这些符号符合利用ls命令所显示出来的描述。
下表总结了所有Chmod命令使用的符号
符号
含义
U
用户或属主
G
组
O
其它
A
所有的用户,组和其它部分
+
增加这些权限
-
去掉这些权限
=
设置权限等于
(出处:http://www.sheup.com)
[1] [2] [3]
文件首次建立的日期
->
用来说明真正文件的链接或符号
/usr/lib/linuxconf/redhat/scripts/linuxconf
说明文件的物理位置
现在你已经理解了在UNIX下的文件或目录不同模式位所代表的含义,下面我们将用不同的方法来改变它们。
通常对普通文件默认的权限是666(属主、所在组及其它用户有读取和写入的权限)。每个位(八进制值)都分配给文件的三个组成部分(属主、所在组及其它用户)。对于一个可执行的程序默认的权限可能是777(对所有的用户都是有读取、写入和搜索执行的权限)。
Umask命令默认的”mask”为022,通常与文件的模式位相AND来改变,比如对一个默认权限为0666的文件作AND得到最后的模式位为0644,也就是最后文件的权限为属主有读、写权限,所在组和其它用户有只读的权限。
在一个站点中的所有的用户都期望保护他们自己的数据,默认情况下,是由其它用户来检查的,所有的用户都应该有一个UMASK值为077。如果用户需要和所在组的用户协同完成项目时,那么umask值为037是最佳的选择。
The chmod 命令
Chmod命令是用来操纵文件权限的。这个命令可以以两种方法来应用
· 绝对模式:当使用这种方法时,命令是这样的
chmod 666 filename
这里,权限的模式位已经被绝对地应用到了文件上。应用到不同组成部分上的权限(如属主,组,其它用户)取决于输出的模式位,请参考表3-4
· 符号模式:当使用这种方法时,命令是这样的
chmod a+rwx filname
这里,对于些文件所有用户的权限都是可以读取、写入及执行。因为这些符号符合利用ls命令所显示出来的描述。
下表总结了所有Chmod命令使用的符号
符号
含义
U
用户或属主
G
组
O
其它
A
所有的用户,组和其它部分
+
增加这些权限
-
去掉这些权限
=
设置权限等于
(出处:http://www.sheup.com)
[1] [2] [3] [4]