Yesky首页| 产品报价| 行情| 手机 | 数码 | 笔记本 | 台式机 | DIY硬件 | 外设 | 网络 | 数字家庭 | 评测 | 软件 | e时代 | 游戏 | 图片 | 壁纸 | 群乐 | 社区 | 博客 | 下载
您现在的位置: 天极网 > Win32程序设计之系统安全
全文

Win32程序设计之系统安全

2001-05-28 12:09 作者: QQ新人类编译 出处: yesky 责任编辑:方舟

  以下就是上面所讨论的概念的简要总结

  .一个NT系统就象一栋建筑物。你的密码就相当于一把钥匙,可让你进入建筑物。

  .进入建筑物后,你就会发现有成千上万个房间。一个文件就相当于一个房间,注册表项目、命名管道和线程等也类似。

  .每个房间的安全是由拥有者来设置的,可设置为只让某个人使用、一群用户使用、某个组或者任何人访问;

  .每个房间还可以加入一个岗哨,负责检查和记录谁进入房间以及每个人进入后做了些什么;

  现在你已经有了一些基本的概念,以下再谈一下NT在安全方面的一些特别的术语。

  NT的安全术语

  当你登录入一个NT系统时,系统将给你一个访问的记号。这个访问记号是你用来打开NT系统中的锁的钥匙。你的钥匙可以打开一些锁,但是有一些它打不开。你所做的每个处理都包括有一个你的访问标记的副本。

  这个访问的标记用来做两件不同的事情。首先,它用来标识你的身份。例如,当你以用户“smith”的身份登录时,你的访问记号就包含了该用户的标识。访问记号还用来标识你属于的所有组。例如,在用户管理器中,你可能是Power User组,Backup Operator组和一个名为Programmers的自定义组的成员。你的访问记号就可以标识你为这些不同组的成员。

  你的访问记号还包含该用户的所有权限。你所属的每个组都拥有一些相关的用户权限。如果你打开用户管理器,你将可以在用户权限菜单中看到权限的列表。例如,power users用户组拥有设置系统时间的权限,而普通的用户没有。某些用户可以关闭系统,某些不行。系统通过将你所属每个组的所有权限组合起来,得到你的权限列表,并且放在你的访问记号中。管理员还可以通过用户管理器,为每个用户分配一些特别的权限。



***************图一*****************

  一个访问记号包括有一个用户ID,用户所属的组名和由所有这些组得到的用户权限列表。

  系统中的大部分对象都可以有自己的锁。在NT中,一把锁被称为一个安全描述器。如果在某个对象的创建函数包含有一个安全的参数,你就可以加入一把锁。以下的对象都可以有锁:

  .文件(如果它们存放在一个NT文件系统卷中)

  .目录(如果它们存放在一个NT文件系统卷中)

  .注册键

  .进程

  .线程

  .Mutexes

  .Semaphores

  .事件

  .命名管道(在系统或者网络上)

  .匿名管道(仅在系统中)

  .Mailslots(仅在系统中)

  .控制台屏幕缓冲

  .文件映射

  .服务

  .私有的对象

  要锁上一个对象,你要创建一个安全描述器,并且在创建对象的时候将它传送给该对象。如果将安全属性参数的值设置为0,则表示系统为该对象创建一个默认的安全描述器,从而允许你访问该对象。

  一个安全描述器包含有四个方面:

  .一个拥有者标识符,用来标识该对象目前的拥有者是谁

  .一个主要的组标识符


  .一个系统访问控制列表(SACL,system access control list),包含有审核的信息

  .一个自由访问控制列表(DACL,discretionary access control list),用来决定那些用户和组和可以访问,那些不可以

  NT对象的拥有者可以随时更改对象的安全信息。例如,如果你拥有一个文件,并且将它设置为没有人可以访问它,以后,你还可以改变它的安全信息,因为你是它的拥有者。这就象打坏锁进入你的房间一样,虽然锁被打坏了,但是你可以换一把新锁,因为你是房间的拥有者。



*************图二******************

  任何对象的安全描述器包含有用户和组的ID、控制访问权限的自由访问控制列表,以及控制审核信息的系统访问控制列表。

  DACL是这把锁的核心。它用来控制谁可以访问、禁止谁访问该对象。它是一个访问控制列表,或者简称为ACL,其中包含有访问控制项目(ACE)。每项ACE都说明了一个用户或者组,以及它们的权限。例如,如果对象是一个文件,用户“smith”可允许读取该文件,这样就会有一个ACE指示用户“smith”拥有读取的权限。这也称为一个访问允许ACE,因为它允许一个用户或者组做某件事情。同样,还有一个访问拒绝ACE,用来禁止某个用户或者组访问。例如,你允许Power Users组访问一个对象,但对于“smith”用户,他虽然属于power user,但你不想他可访问到该对象,使用一个拒绝访问ACE就可以了。

  SACL(System Access Control List,系统访问控制列表)也包含有ACE,不过这些ACE是用来决定谁将被审核以及审核的原因。SACL中的一个ACE被称为一个审核访问ACE。例如,当“smith”用户成功打开一个文件时,是否要创建一个审核项目呢?这个是由SACL中的一个ACE项目指定的。



**************图三****************

  一个访问控制项目(ACE)指定一个用户(或者组)和所允许的访问类似。ACE都存储在ACL中。

  一个ACL中的每个ACD都由三部分来组成:一个安全标识符(SID,Security Identifier),一个访问掩模和一个ACE头。SID是存储在注册表中的一个值(也可通过函数调用得到),可唯一标识用户管理器中的每个用户或者组。ACE头用来决定ACE的类型:访问控制,访问拒绝等。一个掩模有32位,用来决定用户可对对象进行的操作。有一些标准的权限应用于系统中所有的对象,还有一些对象有特别的访问权限,可在这些对象上应用。例如,以下就是一个文件对象可应用的特别和标准访问权限:


specific:
FILE_READ_DATA
FILE_WRITE_DATA
FILE_APPEND_DATA
FILE_READ_EA
FILE_WRITE_EA
FILE_EXECUTE
FILE_READ_ATTRIBUTES
FILE_WRITE_ATTRIBUTES
FILE_ALL_ACCESS

standard:
DELETE
READ_CONTROL
STANDARD_RIGHTS_ALL
STANDARD_RIGHTS_EXECUTE
STANDARD_RIGHTS_READ
STANDARD_RIGHTS_REQUIRED
STANDARD_RIGHTS_WRITE
SYNCHRONIZE
WRITE_DAC
WRITE_OWNER

generic:
GENERIC_ALL
GENERIC_EXECUTE
GENERIC_READ
GENERIC_WRITE


  generic权限是预定义的标准(standard)和特定(specific)权限的混合,对于各种对象都是不同的。

  访问掩模是一个32位的位掩码。在掩码中,每个standard、specific和generic权限都有一个位与之相关。开头的16位保存的是specific的权限,并且也是该访问掩码所指对象的键(例如,上面的FILE_ constants )。接着的8位保存的是standard权限。高4位保存generic权限。



*************图四****************

  NT的安全特性使用了不少的新术语,不过,通过例子中的代码,你将会逐渐熟悉所有这些名词,并且也更容易理解所有这些概念。以下就是一个简要的总结:

  .用户登录后,他们将得到一个访问记号。一个访问记号包含有用户的ID,用户组和用户所属组得到的用户权限

  .每个对象都拥有一个安全描述器,就象它的锁一样。一个安全描述器包含有一个用户和组标识符,一个系统ACL和一个Discretionary ACL。

  .一个DACL控制谁允许访问及可以对对象做什么操作

  .一个SACL控制要审核谁对一个对象的某种处理

  .ACL由ACE组成。每个ACE包含有一个SID,用来标识用户或者组,一个访问掩模,用来决定允许用户或者组做何种处理,还有一个ACE头,决定ACD的类型。

  以下的部分提供了两个简单的例子,将所有这些术语组合在一起,并且展示了这些安全设置是如何运作的。
共4页。 9 1 2 3 4 :
文章阅读排行
周排行
月排行
欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml