用户帐户控制(User Account Control,UAC)为Windows Vista中所推出的安全技术之一,其主要特点在于通过限制应用软件对系统层级的访问,从而改进Windows操作系统的安全性。虽然此类机能一直遭到部分用户的批评,但后续的Windows操作系统仍保留此类机能。如Windows 7中,微软公司保留并改进了此项功能(自定义UAC的安全等级)。
用户账户控制UAC最早出现在Windows Vista上面,当时只有关闭和开启UAC的选项,在后续的Windows 7操作系统中UAC进行了更新,增加了UAC白名单,并且更新了4个等级取代了Windows Vista只有开和关的功能,Windows 7操作系统允许用户根据自身应用场景需求动态调整UAC的安全级别,Windows 7系统为用户定义了如下4个安全级别。
相当于Windows Vista中的UAC,即对所有改变系统设置的行为进行提醒(例如:安装应用程序、更改windows设置),如图1-1 所示。
仅在程序尝试试图改变系统设置时才会弹出UAC提示,用户改变系统设置时不会弹出提示(如果我们使用常见程序和常见网站,推荐使用这种模式),如图1-2所示。
仅当程序尝试更改计算机时弹出通知提示,用户自行设置更改计算机时不会弹出通知提示(与第二级别基本相同,但不使用安全桌面),如图1-3所示。
UAC从不提示(相当于关闭UAC),如图1-4所示。
从Windows7开始,Windows7会在涉及UAC的操作的时候弹出一个窗口,并且会黑屏询问你是否继续使电脑处于“安全桌面”状态,如图1-5 所示。此时这个桌面具有System的权限,其他程序无任何权限进行操作。
以下列举会触发UAC的操作。
在整个Windows操作系统资源中会有一个ACL(Access Control List)的访问策略列表,这个访问控制列表负责决定了各个不同权限的用户/进程能够访问不同的资源,当一个线程去尝试访问某一个对象时,当前的系统会先检查线程所持有的Access Token 以及被访问对象的安全描述符中的DACL规则,如果安全描述符中不存在DACL规则,则当前系统会允许线程直接进行访问,如下图1-6所示,为整个线程访问对象的流程。
正常来说,当我们使用账号登录到操作系统之后会产生令牌,令牌会记载我们所拥有的权限 ,如果我们以管理员角色权限进行登录会生成两份访问令牌,如图1-7所示。
标准用户访问令牌(Standard user access token)。
完整的管理员访问令牌(Full administrator access Token)。
当我们登录的是Administrator用户的时候(同时已经开启了UAC)想在管理控制台中执行添加或删除用户”操作,其会弹出“安全桌面”。我们可根据实际情况选择是还是否,如图1-8所示,出现这种情况的原因是在访问之前,系统会先检查进程所持有的Access Token 以及被访问对象的安全描述符中的DACL规则,确保携带的令牌以及规则正确无误,因为我们携带的访问令牌是权限最低状态下的受保护的管理员访问令牌,所以当进程请求触发了UAC操作的时候,UAC就会弹出通知询问我们是否允许,当我们点击“是”的时候 其实就给进程发送了我们的管理员访问令牌,届时管理员的状态由“受保护状态”变更为“提升状态下”的提升管理员,我们通过提升状态下的管理员访问令牌即可对计算机执行更改操作。
假设当我们登录的用户是普通用户的时候, Windows会给用户分配一个标准Access Token,如图1-9所示。
当我们要访问某个进程时,其携带的是标准用户的访问令牌,那么在进程触发UAC操作的时候就会弹出通知,询问我们并让我们输入管理员账号密码,如图1-18所示。因为此时我们是不具备管理员访问令牌的,我们通过输入管理员账号密码获取管理员的访问令牌操作,其实我们输入管理员密码的过程本质上就是通过管理员的凭证去对标准用户进行权限的提升。
UAC虚拟化也被称为重定向操作 当用户权限没有达到程序要求的权限,就会进行重定向操作,虚拟化由俩个部分构成文件虚拟化和注册表虚拟化。例如,如果一个程序试图写入到 C:\Program Files\Contoso\Settings.ini,但用户没有写入那个目录的权限,这个写操作就会被重定向至 C:\Users\Username\AppData\Local\VirtualStore\Program Files\contoso\settings.ini 对于注册表,如果一个程序试图写入到 HKEY_LOCAL_MACHINE\Software\Contoso,它会被自动重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software\Contoso或者 HKEY_USERS\UserSID_Classes\VirtualStore\Machine\Software\Contoso中。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。