Vista新功能体验之强大的用户帐户控制

UAC(User Account Control : 用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术 , 它要求所有用户在标准账号模式下运行程序和任务 , 阻止未认证的程序安装 , 并阻止标准用户进行不当的系统设置改变 。
【Vista新功能体验之强大的用户帐户控制】在最初的时候 , 这个功能曾被称为User Account Protection(用户帐户保护) , 后来才更名为目前的User Account Control(用户帐户控制) 。
以前版本Windows中的安全控制 对Windows 9x而言 , 其安全性是十分薄弱的 , 几乎可以说是不设防的系统 。在Windows 2000之后 , 微软才逐步在系统中引入用户权限的控制 。从宽泛的角度看 , Windows 2000 /Xp /2003在安全方面的实现机制大致相同 , 下面以Windows XP为例说明一下在Windows Vista之前版本系统中的安全控制 。
当Windows Xp安装完成后 , 系统内所有用户的凭据信息(也就是用户名和密码)都被保存在SAM(Security Accounts Manager : 安全帐户管理器)数据库中 。这样 , 当用户登录系统时 , 首先要输入用户名和密码 , 这些信息由winlogon进程获取 , 并由LSA(Local Security Authority : 本地安全验证)子系统在SAM数据库中进行验证 。如果SAM数据库中有符合条件的记录 , 那么LSA子系统就会生成一个访问令牌 (Access Token) , 并传递给用户 。当该用户需要运行程序或者访问资源的时候 , 系统首先会从用户持有的访问令牌中找到用户的权限信息 , 然后和想要进行的操作所需要具有的权限进行比较 , 如果权限足够大 , 那么就可以进行相应的操作;而如果权限不足 , 操作则会被禁止 。
比如说 , 在Windows Xp下 , 当我们试图启动一个程序的时候 , 系统会使用我们的访问令牌来启动程序 , 这样这个程序就拥有了和本人一样的权限 。(我们可以打开Windows任务管理器的进程选项卡 。该选项卡下列出了当前系统中的所有进程 , 每个进程在“用户名”一栏就显示了该进程的“身份” 。)因为不同的进程使用不同的访问令牌(也就是用户身份) , 其权限也就会相应地有所不同 。
乍看起来 , 这是一套相当安全并且方便的机制 , 因为只要在登录系统的时候输入一次用户名和密码 , 就可以在整个登录过程中直接执行任何具有权限的操作 。同时只要保护好SAM数据库 , 也就不用担心系统的安全问题 。然而事实远非如此 , 这样的做法虽然方便 , 不过却相当不安全 。比如说 , 当使用管理员帐户登录系统后 , 所运行的任何程序自然也将具有管理员权限 , 这时候如果不小心运行了网上下载的含有恶意程序的程序 , 将会使用当前用户的访问凭据 , 也就是说程序的进程也具有了管理员权限 , 进而该进程可以对系统进行任何操作 。这之中所蕴含的风险是不言而喻的 。
这也是为什么很多介绍系统安全的文章都会建议 , 平时使用计算机的时候最好不要用管理员帐户登录 , 而是用权限小一些的帐户 , 只有在偶尔需要进行维护或者其他必要操作的时候才使用管理员帐户 , 或者临时使用Runas命令 , 赋予当前帐户管理员权限 , 这样才能保证系统安全 。
但一般说来 , 为操作中的便易 , 相当多的Windows Xp用户日常使用的是对机器有绝对控制权的账号 , 这样固然省事 , 但是 , 自己方便了 , 对于敌人 , 恶意软件和病毒 , 也一样对系统可以为所欲为 。
Windows Vista中的UAC 为解决上文提到的Windows旧版本中安全控制的缺陷 , 改善Windows一贯被人诟病不够安全的局面 , Windows Vista中纳入了UAC , 对授权进程要求所有用户以标准用户模式运行 , 并且限制管理员的权限 , 用以限制恶意软件对电脑所带来的损害 。如果一名用户希望安装新的软件 , 或者更该系统设置 , 他们需要输入凭证并验证该进程 。当然 , 这也不是微软独创的全新技术 , 事实上 , 类似在机制在竞争对手如Mac OS X或Linux上已经应用了多年 。

推荐阅读