- Vista SP1 安装Vista SP1后遇到声音问题的解决方案 Windows Vista Service Pack 1最新版本语言包公布
- Vista应用 Windows 7 M2 下载 Microsoft Silverlight 2 RTW(2.0.31005.0)已提供下载
- Vista问答 BrowseNewProcess 引起IE相关的四则故障及解决 windows系统账户权限设置详解
- Vista评测 Vista SP1 DirectX 10.1游戏性能测试 Windows Vista SP1新变化全方位解析
- Vista教程 Windows Vista操作系统下配置JAVA开发环境 Windows Vista中EFS加密证书的导入与导出
在Windows Vista中,安全机制有了很大的改进,不仅仅看ACL。这就好比男女双方求爱,除了看对方的经济收入等条件(相当于ACL),还要看是否门当户对(相当于完整性级别)。
想必您已经知道如何查看和设置资源对象的完整性级别(可以用icacls或者AccessChk命令)。
那么进程呢?相信您已经知道,就是所谓的标签SID。
标签SID的实质
标签SID位于进程的访问令牌里,用来标识进程的完整性级别。进程要访问资源对象(例如某个文件夹)时,就亮出它的访问令牌。文件夹就会检查令牌里的标签SID,看看级别是否足够。如果级别比自己还低,对不起,您只能读取,不能写入。
可以用Process Explorer查看进程的访问令牌,从而查看某个进程的标签SID。附图就是一个进程的访问令牌。其中红色部分显示其标签SID是“Mandatory Label\Medium Mandatory Level”,表明该进程的完整性级别为“中级”。蓝色部分显示该进程并不拥有管理员的运行身份(Administrators标记为Deny),同时只有五个特权。
完全可以想像,如果进程的完整性级别是高级(标签SID为Mandatory Label\High Mandatory Level),该进程应该拥有管理员的运行身份(Administrators标记为Owner),同时拥有约24个特权。
和Linux的对比
利用完整性级别这样的安全机制,Windows Vista就可以获得更高的安全。这样的机制类似于开源的MAC机制,例如Red Hat的SELinux。两者总体上各有千秋,但是窃以为比SELinux更加灵活,对用户的干扰也要小的多。在MAC下,用户有时候必须自己定义进程和资源的“类型”,否则进程工作可能会不正常。
标签SID的其他作用
标签SID除了可以判断进程的访问权限外。还可以用来帮助决策UAC是否弹出权限提升对话框。
默认情况下,如果某个进程需要管理员特权,则系统会查看其父进程的标签SID,如果是“中级”,则会弹出权限提升对话框。如果是“高级”,则不会弹出对话框。
由于绝大多数用户进程的父进程是Explorer,其标签SID为“中级”,所以会弹出权限提升对话框。
以管理员身份打开“命令提示符”窗口,然后再在其下运行需要管理员特权的进程,这时候不会弹出权限提升对话框。因为父进程cmd.exe的标签SID是“高级”。
有趣的特例
我们可以做一个实验,来欺骗Windows Vista的安全机制。在Process Explorer里单击File→Run as Limited User,然后在打开的对话框里输入“CMD”并回车,如附图所示。
这时候会弹出一个很“另类”的命令提示符窗口。该命令提示符进程的标签SID是“高级”,但是实际上却是标准用户权限。不信?且看其访问令牌:
在红色部分我们可以看到,其标签SID是“Mandatory Label\High Mandatory Level”(完整性级别为“高级”),但是却并不拥有管理员的运行身份(Administrators标记为Deny),同时只有五个特权(查看蓝色部分)。
在这个“另类”的命令提示符下运行某个需要管理员特权的任务,例如“服务”管理单元,会发生什么情况?
