【IT168 服务器频道】在家庭和公司环境中,使用标准用户帐户可以提高安全性并降低总体拥有成本。当用户使用标准用户权限(而不是管理权限)运行时,系统的安全配置(包括防病毒和防火墙配置)将得到保护。这样,用户将能拥有一个安全的区域,可以保护他们的帐户及系统的其余部分。对于企业部署,桌面 IT 经理设置的策略将无法被覆盖,而在共享家庭计算机上,不同的用户帐户将受到保护,避免其他帐户对其进行更改。
但是,很久以来,Windows 的用户一直都在使用管理权限运行。因此,软件通常都开发为使用管理帐户运行,并且(通常无意间)依赖于管理权限。为了让更多软件能够使用标准用户权限运行,并且帮助开发人员编写能够使用标准用户权限正常运行的应用程序,Windows Vista 引入了用户帐户控制 (UAC)。UAC 集成了一系列技术,其中包括文件系统和注册表虚拟化、受保护的系统管理员 (PA) 帐户、UAC 提升权限提示,以及支持这些目标的 Windows 完整性级别。
Windows 7 沿用了 UAC 的目标,基础技术相对未做改变。但是,它引入了 UAC 的 PA 帐户可以运行的两种新模式,以及某些内置 Windows 组件的自动提升机制。在此文章中,我将论述推动 UAC 技术发展的因素、重新探讨 UAC 和安全性之间的关系、描述这两种新模式,并介绍自动提升的具体工作方式。
UAC 技术的最基本元素和直接效益在于它能使标准用户更方便地使用 Windows。这是因为 Windows XP 未将更改时间(安全敏感的系统操作)与更改时区(只是影响时间的显示方式)区分开来。在 Windows Vista(和 Windows 7)中,更改时区不是一项管理操作,并且时间/日期控制面板小程序也将管理操作与标准用户操作进行了分隔。仅仅这一项更改就让许多企业能够为出差的用户配置标准用户帐户,因为用户将能够调整时区来反映他们的当前位置。Windows 7 进一步做出了改进,比如刷新系统的 IP 地址、使用 Windows Update 来安装可选的更新和驱动程序、更改显示 DPI,以及查看标准用户可访问的当前防火墙设置。
文件系统和注册表虚拟化在后台工作,可以帮助许多无意间使用管理权限的应用程序在没有管理权限的情况下也能正常运行。对于不必要地使用管理权限而言,最常见的情况是将应用程序设置或用户数据存储在注册表或文件系统中系统所使用的区域内。举例来说,某些旧版应用程序将其设置存储在注册表的系统范围部分 (HKEY_LOCAL_MACHINE\Software),而不是每用户部分 (HKEY_CURRENT_USER\Software),而注册表虚拟化会将尝试写入系统位置的操作转到 HKEY_CURRENT_USER (HKCU) 中的位置,同时保持应用程序兼容性。
设计 PA 帐户的目的是为了鼓励开发人员将应用程序编写为只需要标准用户权限,同时使尽可能多的在管理组件和标准用户组件之间共享状态的应用程序能够继续工作。默认情况下,Windows Vista 或 Windows 7 系统上的第一个帐户(在 Windows 的早期版本上为完全权限管理员帐户)是 PA 帐户。PA 用户执行的任何程序都使用标准用户权限运行,除非用户明确提升了应用程序,即授予应用程序管理权限。诸如安装应用程序和更改系统设置等用户活动会触发提升权限提示。这些提升权限提示是最显著的 UAC 技术,表现形式为切换到一个包含允许/取消对话框的屏幕,背景为灰色的桌面快照。
在安装之后创建的帐户是标准用户帐户,默认情况下,这些帐户通过一个“即时权限提升”提示提供提升功能,该提示要求提供将用于授予管理权限的管理帐户的凭据。利用这一便捷功能,只要共享家庭计算机的家庭成员或更注重安全的使用标准用户帐户的用户知道管理帐户的密码,他们就能够用管理权限来运行应用程序,而不必手动切换到其他用户登录会话。此类应用程序的常见示例包括安装程序以及家长控制配置。
在启用了 UAC 后,所有用户帐户(包括管理帐户)都将使用标准用户权限运行。这意味着,应用程序开发人员必须考虑他们的软件默认情况下将没有管理权限这一事实。这应会提醒他们将其应用程序设计为使用标准用户权限工作。如果应用程序或其功能的某些部分需要管理权限,它可以利用提升机制来允许用户解锁该功能。通常,应用程序开发人员只需进行少许更改就可让其应用程序使用标准用户权限正常工作。如有关 UAC 的 E7 博客文章所述,UAC 成功地改变了开发人员编写软件的方式。
提升权限提示的另一个优点是:它们能够在软件想要对系统进行更改时“通知”用户,并使用户有机会来阻止这种情况。例如,如果用户不信任或不想允许修改系统的软件包要求管理权限,则它们可以拒绝提示。