欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

深入理解Windows Vista UAC—管理员批准模式[谢绝转载]

甚至就算应用程序可以正常运行在标准用户下,有些操作还是需要管理员特权。绝大多数软件安装需要管理员特权,以便在系统全局区域新建目录和注册表键值,或者安装服务或驱动。修改系统全局区域的Windows和程序设置也需要管理特权,就和Windows Vista家长控制一样。尽管大多数操作可以切换到专门的管理员帐户去完成,但是这样会很不方便,很可能导致绝大多数用户还是在管理员帐户下执行日常工作。

 

因此Windows Vista包含一个增强的“运行方式”功能,标准用户可以很方便地用管理特权加载进程。这个功能需要给应用程序提供一个方法,以便系统可以在必要时以该程序的身份获得管理员特权,接下来将会简单描述。

 

此外,Windows Vista还引入了管理员批准模式(AAM),这样用户就能够以标准用户身份运行,而获得管理员特权,同时无需每次输入管理员帐户名和密码。该特性在用户登录时创建两个身份标识:其中一个是标准用户特权,而另一个是管理员特权。由于Windows Vista下的用户要么是标准用户,要么很可能是AAM模式下的标准用户,所以开发人员必须假设所有的用户都是标准用户,这样就会有更多的应用程序可以在标准用户下正常运行,而无需虚拟化或者兼容性修补数据库的帮助。

 

给进程赋予管理员特权的过程叫做提升特权elevation)。如果是由标准用户帐户进行提升特权,这也叫做在背后提升OTSOver the Shoulder),这是因为需要有另外一个用户站在该用户的背后,帮助该用户输入管理员组成员帐户的名称和密码。AAM用户执行的提升特权,叫做同意提升,因为用户只需简单地同意所分配的管理员特权。

 

如果用户属于如附图所示的“准”管理员的组,则Windows Vista会把该用户当作管理员。这些组的绝大部分只在加入域的系统中存在,并不会直接给用户提供本地管理特权,但是允许他们修改域环境里的设置。如果用户是这些组的成员帐户,但并不是真正的管理员(准管理员),则该用户需要通过OTS提升特权,而不是通过同意提升的方法。

如果属于这些组的用户登录系统,Windows Vista会创建一个访问令牌,代表该管理员用户的一个标准用户版本。新的访问令牌中仅仅保留如附图所示的特权,这是标准用户所具有的默认特权,而剔除所有其他的特权。

同时新访问令牌会给准管理员类型的组打上USE_FOR_DENY_ONLY的标记。Sysinternals Process Explorermicrosoft .com/technet/sysinternals)显示进程的访问令牌,左侧的附图显示运行在管理特权下的进程的组成员和特权,而右侧的附图显示则是无管理员特权的进程。为了防止误用,Windows安全架构要求带Disabled标记的特权必须先启用,才能进行使用。

 

带有USE_FOR_DENY_ONLY标记的组只能用来拒绝用户访问某个资源,而不能允许访问,这样就可以抵消删除该组所带来的安全漏洞。例如,假设某个文件的访问控制列表拒绝管理员组的所有访问权限,但是给该用户所属的其他组提供访问权限,如果访问令牌里没有管理员组,则该用户可以访问该文件,这样该用户的标准用户身份就比其管理员身份拥有更高的访问权限。

 

独立计算机(通常是指家庭计算机)和加入域的系统,在处理远程用户访问AAM时有所不同,这是因为加入域的系统可以在资源权限中使用域管理员帐户。当用户访问独立计算机上的文件共享,Windows会请求远程用户的标准用户身份;但是在加入域的计算机上,Windows会请求该用户的管理员身份,因而接受所有的域组成员关系。

已发表 2007年5月21日 10:23 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2008年4月27日 22:19 by 赛斯奇

# re: 深入理解Windows Vista UAC—管理员批准模式[谢绝转载]

谢谢,我是一个开发人员,如果能结合编程来讲解就更好了.

说说您的看法?

(必填) 
必填 
(必填)