10.1.2 存取控制.htm
来自「Windows2000后台服务程序开发手册」· HTM 代码 · 共 730 行 · 第 1/4 页
HTM
730 行
size=2>为了成为一个成功的安全性开发人员,了解及熟悉Windows
2000安全性是很重要的。花些时间在利用使用者介面修改系统对象的安全性上,将大大地使您增加有效地设计安全性软件的能力。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>以下的章节将带领您贯穿Windows提供的工具,并帮助您熟悉安全性的内容。在Windows中,可使用登录机码、文件及目录(只在NTFS分割上)取得安全性。文件系统可能是熟悉安全性的最有效方法,因为它的继承模组包含容器对象(目录)及非容器对象(文件)。假如您没有可用NTFS分割区,则可以使用登录。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7
size=3><B style="LINE-HEIGHT: 25px">登录的存取控制<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>这些步骤叙述如何将安全性选项指定到登录中的方法:</FONT></P><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<OL style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px">以管理员或管理员群组的成员身分登录您的系统。
<LI
style="LINE-HEIGHT: 25px">执行RegEdt32.exe公用程序,您将看到类似图10-4的画面。<BR
style="LINE-HEIGHT: 25px">
<CENTER style="LINE-HEIGHT: 25px">
<P><INPUT id=1 style="LINE-HEIGHT: 25px" type=image height=432
width=600 src="10.1.2 存取控制.files/10-4.gif" border=0
onclick="imgclick"></P></CENTER>
<CENTER style="LINE-HEIGHT: 25px">
<TABLE style="LINE-HEIGHT: 25px" border=0>
<TBODY style="LINE-HEIGHT: 25px">
<TR style="LINE-HEIGHT: 25px">
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图10-4 </B></FONT>登录编辑器(RegEdt32.exe)</FONT></TD></TR></TBODY></TABLE></FONT></CENTER><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<LI
style="LINE-HEIGHT: 25px">选择标题为本机上的HKEY_LOCAL_MACHINE视窗,此视窗会显示您系统上储存的HKEY_LOCAL_MACHINE内容。
<LI
style="LINE-HEIGHT: 25px">开启Software机码并从编辑功能表中选择新增机码选项,新增一个称为ANewKey的新机码(新机码将命名为ANewKey,以使它显示在接近Software下的机码清单顶端)。
<LI
style="LINE-HEIGHT: 25px">点选新的机码,并从安全性功能表中选择使用权限选项,此时会出现一个权限对话方块。
<LI
style="LINE-HEIGHT: 25px">取消核取允许来自父项的可继承权限传播至此对象的核取方块,如此会使您的新机码安全描述项被保护,不允许从父机码传播可继承权限。系统会询问您是否希望复制或移除目前继承的权限,如图10-5所示。</FONT><BR
style="LINE-HEIGHT: 25px">
<CENTER style="LINE-HEIGHT: 25px">
<P><INPUT id=2 style="LINE-HEIGHT: 25px" type=image height=411
width=594 src="10.1.2 存取控制.files/10-5.gif" border=0
onclick="imgclick"></P></CENTER>
<CENTER style="LINE-HEIGHT: 25px">
<TABLE style="LINE-HEIGHT: 25px" border=0>
<TBODY style="LINE-HEIGHT: 25px">
<TR style="LINE-HEIGHT: 25px">
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图10-5 </B></FONT>为ANewKey设定继承的权限</FONT></TD></TR></TBODY></TABLE></CENTER><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<LI style="LINE-HEIGHT: 25px">点选移除按钮以移除存取清单。
<LI
style="LINE-HEIGHT: 25px">现在新机码的DACL内容是空的。假如您点选对话方块中的确定钮,则除了您之外(因为您是此机码的拥有者),没有人可以对这个机码作任何事。而您唯一可作的事,将是读取或写入对象安全性。
<LI
style="LINE-HEIGHT: 25px">点选新增钮以显示选择使用者、电脑或群组对话方块内容。从清单中选择Everyone,点选新增钮,然后按下确定按键。这表示为Everyone新增一个ACE到您机码的DACL中。
<LI
style="LINE-HEIGHT: 25px">点选允许之下的完全控制核取方块,并点选确定按钮,登录编辑器会为您的机码建立一个新的安全描述项,以让Everyone完全控制这个机码。
<LI
style="LINE-HEIGHT: 25px">选择ANewKey然后从编辑功能表中选择新增机码选项,对ANewKey新增两个子机码。(我将我的新机码取名为First及Second,但您可以用任何您喜欢的名字命名。)
<LI
style="LINE-HEIGHT: 25px">登出您的机器,以内建的Guest帐户登入(您可能必须赋予这个帐户使用能力),然后重新执行RegEdt32.exe。除了您自己这部分外,可以使用任何信任成员帐户(另一个登出的选择是使用RunAs公用程序,以Guest帐户的身分启动RegEdt32.exe。例如:RunAs.exe
/env /user:mymachine\Guest RegEdt32.exe)。
<LI
style="LINE-HEIGHT: 25px">在HKEY_LOCAL_MACHINE\Software下找出您的新机码并且开启它,您应该会看到新的子机码。点选它然后从安全性功能表中选择使用权限选项,检查这两个子机码的权限,注意到这两个机码都已经从父机码继承了简单的Everyone\
完全控制的安全性,此时不要核取允许继承权限核取方块。
<LI
style="LINE-HEIGHT: 25px">由于是内建的Everyone群组成员的缘故,否则不会赋予Guest帐户可对这些机码作任何它想作的事,包括改变它们的权限。所以利用这个权力并且开启其中一个子机码的权限。
<LI
style="LINE-HEIGHT: 25px">核取拒绝下方的完全控制核取方块,以拒绝对Everyone群组的完全控制。还不须点选确定钮。
<LI
style="LINE-HEIGHT: 25px">您正在做的事是为子机码新增拒绝存取的ACE到DACL中。然而,请注意,允许下方的核取方块仍旧是被核取的。这是因为继承允许对Everyone完全控制的允许控制ACE仍出现在当前的DACL中。然而,您明确要求的ACE将优先于任何继承的ACEs。现在点选确定钮,然后在询问您是否想要继续的安全性对话方块中点选是。
<LI
style="LINE-HEIGHT: 25px">现在您已经实际地拒绝每个人(包括您登录的这个帐户)对这个机码的任何存取权限。没有人可以在这个机码下建立子机码或值。只有拥有者(应该是您经常登录的帐户)可以修改允许权限的安全性。
<LI
style="LINE-HEIGHT: 25px">在您登出并且以您标准的帐户重新登录之前,试着编辑刚修改的登录机码权限。系统应该会告诉您没有足够的存取权利去检视或编辑这个机码的安全性(然后系统将显示一个空的安全描述项,以防止您有存取这个机码的写入权利,而您确实没有这个权力)。</FONT>
</LI></OL>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7
size=3><B style="LINE-HEIGHT: 25px">对NTFS分割区的存取控制<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>以下是说明NTFS分割上的文件权限运作范例:</FONT></P><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<OL style="LINE-HEIGHT: 25px">
<LI
style="LINE-HEIGHT: 25px">为了检视文件的权限,在Windows浏览器中的文件或资料夹上点选右键,然后从环境功能表中选择属性,以显示属性对话方块,选择安全性页签以显示文件的权限。设定文件权限大部份是以同样的方法,也就是RegEdt32中的登录机码。
<LI
style="LINE-HEIGHT: 25px">在属性对话方块中,点选进阶钮以显示存取控制设定对话方块,如图10-6所示。新增非继承的存取权限,或新增只继承到非容器(或文件)的存取权利。<BR
style="LINE-HEIGHT: 25px">
<CENTER style="LINE-HEIGHT: 25px">
<P><IMG onmousewheel="return bbimg(this)" height=526
src="10.1.2 存取控制.files/10-6.gif" width=610
onload="javascript:if(this.width>500)this.style.width=500;"
border=0></P></CENTER>
<CENTER style="LINE-HEIGHT: 25px">
<TABLE style="LINE-HEIGHT: 25px" border=0>
<TBODY style="LINE-HEIGHT: 25px">
<TR style="LINE-HEIGHT: 25px">
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图10-6 </B></FONT>设定NTFS分割上的文件权限</FONT></TD></TR></TBODY></TABLE></FONT></CENTER><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<LI
style="LINE-HEIGHT: 25px">在属性对话方块中,点选进阶钮。假如您是拥有者,则应该能够将自己或您的其中一个群组设定为拥有者。此外,如果您的帐户拥有SeTakeOwnership
Privilege权限,则您应该能设定系统中任何对象的拥有者。要查看拥有者清单,请点选拥有者页签。
<LI
style="LINE-HEIGHT: 25px">在浏览器中,建立几个目录层级,上层是您用受保护的安全描述项所建立的新目录,然后再新增足够的存取权利以继续建立目录。接着,经由新增更多允许存取或拒绝存取的ACEs来改变阶层中间目录的安全性。现在请查看阶层底端的目录或文件,并且注意它如何从多重父系中继承权限。请试着从阶层中的父系移除一些权限并注意它如何影响子系或Grandchild。您也可以使用登录机码的阶层做这类的测试。</FONT>
</LI></OL>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>此处强烈地建议您花更多时间来试验登录机码或文件的权限(假如您有NTFS分割)。浏览这些内容将有助于您具有成为一位安全性程序设计师的能力。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7
size=4><B style="LINE-HEIGHT: 25px">存取控制术语复习<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>假如您对Windows的安全性程序设计不熟悉,刚才已经连续向您提出了几个新术语及观念。所以在我们潜心研究安全性API的奥秘前,正好可以重新复习一下我们已经学习的部分。</FONT></P><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<UL style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 存取检查 </B></FONT>由系统(或您私人对象的软件)执行的检查,用来决定由权杖识别的使用者是否拥有某个对象之DACL允许的存取权利组。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 存取控制 </B></FONT>系统为了对对象安全性存取之管理及实施所提供的特色。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 存取遮罩 </B></FONT>ACE内部的32位元值,为对象的每个存取权利包含了一个位元,包括标准、特殊及通用权利。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 存取权利 </B></FONT>系统或软件定义的值,指出在安全对象上或与安全对象一起执行某些动作所须的权利。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> ACE </B></FONT>代表存取控制项目。ACE包含了一个识别系统信任成员的SID,以及指出存取权利的存取遮罩。ACE可以允许或拒绝存取某个对象。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> ACL </B></FONT>代表存取控制清单。ACL包含了定义安全性的ACEs或某个对象的安全性报告。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> DACL </B></FONT>代表判别存取控制清单。DACL包含了明确地允许及拒绝存取某个对象的ACEs。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 通用存取权利 </B></FONT>一般的「读取」、「写入」或「执行」某个对象的权利,以及通用的「所有」存取权利。每个通用权利皆对应到一组标准及特殊权利;这些对应会因为对象的每个类型而不同。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 保护的安全描述项 </B></FONT>一个具有控制标记的安全描述项,指出它和它的子系不该从它的父对象接受可继承的ACEs。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> SACL </B></FONT>代表系统存取控制清单。SACL包含了ACEs为相关的使用者指定应被记录到事件日志的事件。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 安全的对象 </B></FONT>任何被Windows存取控制模组保护的私人或系统对象。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 安全描述项 </B></FONT>与系统中每个安全对象关联的结构。安全描述项包括指出拥有者及主要群组的SID,以及非必需的DACL及SACL。<BR
style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> SID </B></FONT>代表向系统识别信任成员帐户的安全识别项。第九章中有SIDs的详细讨论内容。<BR
style="LINE-HEIGHT: 25px">
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?