学院首页>操作系统>Vista>Windows Vista系统账户保护机制初探

Windows Vista系统账户保护机制初探

作者: 来源: 添加时间:2006-5-23 17:29:20

  小知识:不得不提的Runas命令

  这里再介绍一下Runas命令。通过该命令,我们可以在保持当前用户登录的情况下使用其他用户的身份运行程序。例如,对于开始菜单中某个程序的快捷方式,我们只需要在该快捷方式上点击鼠标右键,然后点击“运行方式”命令,接着在弹出的对话框中选择“下列用户”选项,指定一个用户名并输入密码。这样程序就可以使用指定的用户身份运行了。

  当然,如果你喜欢使用命令行方式,也可以运行CMD打开命令提示符,使用类似这样的命令:“runas user:要使用的用户名 要运行的程序的路径和名称”,按下回车,并输入该用户的密码。例如通过“runas user:administrator regedit”这样的命令就可以使用Administrator的身份运行注册表编辑器。

  虽然我们可以在平时使用权限低的用户名登录,但在需要执行特定操作的时候使用runas命令,不过这还是有些麻烦,同时需要进行的额外操作也太多。为了解决这一问题,Vista中提供了UAP功能。

  在介绍这个功能之前,我们先了解一下Windows中的各种权限是如何控制的。这部分主要以单机或工作组环境下的Windows XP Professional为例,同时也适用于Windows 2000/2003,不适用于Windows 98。

  系统安装好后,所有用户的凭据信息(也就是用户名和密码)都被保存在本地SAM(Security Accounts Manager,安全账户管理器)数据库中。当用户登录系统时,首先要输入用户名和密码,这些信息由winlogon进程获取,并由LSA(Local Security Authority,本地安全验证)子系统提交到SAM数据库中验证。

  如果SAM数据库中有符合条件的记录,那么LSA子系统就会生成一个访问令牌(Access Token),并传递给用户。当该用户需要运行程序或访问资源的时候,系统首先会在用户持有的访问令牌中查找相应的权限信息,然后和想要进行的操作所需要具有的权限进行比较,如果权限足够,那么就可以进行操作;反之操作则会被禁止。

  以运行程序为例,当我们试图启动一个程序的时候,系统会使用我们的访问令牌来启动程序,这样被启动的程序就拥有了和令牌所有者一样的权限。为了证实这一点,我们可以打开Windows任务管理器的进程选项卡。该选项卡下列出了当前系统中的所有进程,每个进程在“用户名”一栏就显示了该进程的“身份”。

  以图1中的几个进程为例,csrss.exe是系统进程,因此用户名一栏显示的是“SYSTEM”;emeditor.exe是当前登录用户启动的程序,因此用户名一栏显示的是当前用户的用户名;emule.exe虽然也是当前用户启动的,不过在启动的时候使用了Runas命令,因此看起来该程序就好像其他用户启动的。当然,因为这三个进程使用了不同的访问令牌(也就是用户身份),那么这三个程序的权限也就会有所不同。

  进程显示

  启用该功能之后,Vista实际上自动运行在一个被减少了很多特权的安全级别上。如果因为某些操作,系统需要更高的权限,就会显示一个对话框,并要你输入密码。这个密码只能用于发起这次请求的操作,随后你进行的其他操作,哪怕是由此前的操作导致的额外操作,全部都是以最低的权限运行的。

  默认情况下UAP是被禁用的,要启用该功能,在开始菜单中点击“All Programs(所有程序)”,然后点击“Turn UAP settings On or Off(打开或关闭UAP)”,你将能看到图2所示界面,点击Yes按钮即可打开UAP,随后我们需要注销并重新登录。

  试试看更改一下系统设置吧,例如随便打开控制面板中任何一个控制程序,你都将会看到图3所示的对话框,要求你输入管理员用户的密码。

  弹出警告框

  需要输入管理员密码

  有人担心这个功能在启用后会不会造成使用上的不便,其实担心是没必要的,UAP只是一种保护,而不是单纯的限制。假设我们已经启用了UAP功能,并要执行某个需要一定特权才能执行的操作,例如修改注册表,那么可能有两种情况:如果当前登录的账户已经有了修改注册表的权限,那么Vista会弹出一个对话框,询问用户是否继续该操作,用户可以作出选择;如果当前登录的用户没有修改注册表的权限,Vista会弹出一个对话框,告知用户这一情况,并允许用户输入一个具有相应权限的账户的用户名和密码,验证成功后一样可以进行操作。

第 2 页,共 2 页 [1] [2]
站内搜索