📄 11.1 使用者环境.htm
字号:
<A href="javascript:fontColor('ArticleBody')"><IMG alt=字体颜色
src="11.1 使用者环境.files/fgcolor.gif" align=absMiddle
border=0></A>]</DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=5 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE>
<DIV class=content id=ArticleBody
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
<P class=content></P>
<DIV style="WIDTH: 650px">
<P align=center><FONT color=#3e80d7 size=5><B><SPAN
style="BACKGROUND-COLOR: #d7d7d7">11. 使用者环境</SPAN></B></FONT></P>
<DIV language=javascript id=tab1
style="MARGIN-LEFT: 20px; LINE-HEIGHT: 25px"
ondragover="return tab1_ondragover()"><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>在前面的章节中,我们集中在Microsoft Windows<FONT style="LINE-HEIGHT: 25px"
face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 存取控制 </B></FONT>实作的讨论上。Windows的存取控制以使用者为基础,它可以让系统管理者及安全性程序设计师非常细微的控制谁可以存取系统之物件。为了有效的控制,系统必须维持在系统中执行之任何程序代码的身分识别。此身分识别被称为<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 使用者环境 </B></FONT>。使用者环境有时被称为<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 安全性环境 </B></FONT>或<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 使用者安全性环境 </B></FONT>。</FONT>
<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">确保服务为连接到您服务的客户端执行<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 合适 </B></FONT>的程序代码,不管客户端产生何种要求。
</LI></OL></FONT>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>本章会叙述可以让您用来开发服务的特色,使Windows安全性符合这两个目标。</FONT></P><A
style="LINE-HEIGHT: 25px" name=211001></A>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e70d7
size=5><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>系统在权杖(Token)中维持使用者环境资讯(在第十章中介绍过)。在讨论系统如何使用权杖维持使用者身分识别之前,我们先来讨论系统如何建立权杖的部份。</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>当您登入一个执行Microsoft Windows
2000的工作站或伺服机器时,通常会输入一个使用者名称及密码。使用者名称是一个信任成员帐户,存放在网域控制站的Active
Directory中,或是由一个本地端机器上之安全性资料库所维持的本机使用者帐户。密码则是使用者帐户的<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 凭证 </B></FONT>,系统用它来<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 验证 </B></FONT>登入者是否合法。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>使用者登入系统后,系统会开始收集有关使用者帐户的资讯(除非使用者名称或密码不正确,此种情况表示登入失败)。假如使用者帐户为网域帐户,则系统会收集网域等级的资讯,例如使用者为网域群组的成员。不管登入的帐户是否为网域帐户,系统皆会收集与本地端机器有关的使用者资讯,例如使用者为本机群组的成员(包括经由本机群组成员之网域群组的巢状成员资格)。系统会建立一个被指派给使用者帐户的权限清单,以及所有使用者的群组帐户清单。所有的资讯皆会被编译为系统核心物件内维持的资料结构,也就是权杖。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>就Windows安全性而言,在系统验证登入尝试后,权杖是使用者的身分识别。这个身分识别由使用者信任成员帐户的安全识别码(SID)及表格11-1显示之所有资讯构成(有关SIDs及信任成员帐户的资讯,请参阅 </FONT><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2><A
style="LINE-HEIGHT: 25px"
href="http://e-msbooks.com/relaunch/XML/paser.asp?src=957-2085-84-0_209.xml#"
target=_new>第九章</A> 。)</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>如您所见,权杖中维持着大量的资讯。您可以把权杖视为一个非常详细的「虚拟安全性标志」,权杖使用者SID是印刷在标志上的名称,而群组SIDs则是印刷在标志上的成员资格资讯。权杖中的权限指出某些广泛的系统权利,其馀资料则是主要资讯。在您每次企图存取系统中的安全元件时,它就会参考这个虚拟标志。</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>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>Windows
2000中的每个程序皆拥有各别的权杖,如您所知,这个权杖即是处理程序的使用者环境。当一个处理程序呼叫CreateProcess时,系统会产生呼叫程序的权杖副本,并把新的权杖与新的处理程序联系在一起。此种方法使您的使用者环境可以传播到整个系统,从您一登入系统到最后的处理程序拥有其中一个权杖为止。在您每次登入系统时,系统便会为您的使用者环境建立一个权杖,然后再启动Windows
Explorer,并把权杖与Explorer的程序联系在一起。每次您启动来自Explorer的程序时,新的处理程序就会继承一个原始权杖的副本。直到您的每个处理程序结束,而且Explorer处理程序已离开时,才登出系统、关闭您的使用者环境之最后权杖物件的handle。</FONT></P>
<CENTER style="LINE-HEIGHT: 25px">
<TABLE border=0>
<TBODY style="LINE-HEIGHT: 25px">
<TR>
<TD 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"> 表格11-1 </B></FONT>权杖的内容</FONT></TD></TR></TBODY></TABLE></CENTER>
<CENTER style="LINE-HEIGHT: 25px">
<TABLE border=1>
<TBODY style="LINE-HEIGHT: 25px">
<TR>
<TH style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
size=2>权杖资讯</FONT> </TH>
<TH style="LINE-HEIGHT: 25px"><FONT style="LINE-HEIGHT: 25px"
size=2>说明</FONT></TH></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>权杖使用者SID</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>一个代表使用者帐户的SID,为它建立权杖。这个帐户通常被称为<FONT
style="LINE-HEIGHT: 25px" face=arial color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 权杖使用者 </B></FONT>。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>权杖群组SIDs</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>群组的SIDs,权杖使用者是群组的成员。这包括内建帐户,例如Everyone及受验证的使用者。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>登入SID</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>在验证时建立的唯一SID。这个SID从其他登入工作阶段以唯一的识别登入本工作阶段,即使其他工作阶段为相同的权杖使用者。本章稍后将讨论更多登入SID的细节。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>权限</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>由权杖使用者及群组信任成员帐户持有的权限清单。在第九章曾讨论过权限的细节,本章稍后也有讨论。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>预设拥有者SID</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>一个SID,指出在此权杖下执行的程序代码使用预设安全性建立物件的拥有者。在第十章曾讨论预设安全性的内容,本章稍后也有讨论。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>预设群组SID</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>一个SID,指出在此权杖下执行的程序代码使用预设安全性建立物件的主要群组。第十章曾讨论预设安全性的内容,本章稍后也有讨论。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>预设DACL</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>一个SID,指出在此权杖下执行的程序代码使用预设安全性建立物件的判别存取控制清单(DACL)。第十章曾讨论过预设安全性的内容,本章稍后也有讨论。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>权杖来源</FONT></TD>
<TD><FONT style="LINE-HEIGHT: 25px"
size=2>一个由建立权杖之系统元件所设定的8个字元「来源名称」。</FONT></TD></TR>
<TR>
<TD><FONT style="LINE-HEIGHT: 25px" size=2>权杖类型</FONT></TD>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -