Windows系统具有很完善的安全和认证机制,称作访问控制机制。程序的执行主体(线程)在访问对象(文件、事件等)时,系统会根据线程的“权限”和线程需要访问的对象所具有的访问控制列表(ACL)中的“安全描述符”是否匹配来进行认证,决定一个线程是否可以操作一个对象。
17.1 节将详细介绍关于权限、访问控制列表、安全描述符等在安全认证中所依赖的数据结构,并重点讲解安全认证的过程。
17.2 节将通过实例说明安全认证的具体过程和程序设计方法。
最后17.3节将介绍如何对系统中的用户操作,包括增加删除用户,将用户增加到用户组,修改用户的权限等。
A需要访问(Access)B,A就是访问的主体,B就是访问的客体。A的“访问令牌”和B的 安全描述符共同决定了A是否可以访问B。
访问的主体是进程。在进程中,线程是程序执行的流程,因此只有线程才能操作对象。每个线程都是属于一个进程的,线程并没有属于自己的权限,而是来源于线程所属于的进程。一个进程中的所有线程都具有同样的权限,因此可以把进程看作访问的主体。
访问的客体是安全对象,所有被访问的对象都具有安全描述符,包括了文件、注册表、事件(Event)、互斥(Mutex)、管道等。
17.1.1 访问令牌、权限和用户标识
进程的权限继承自创建进程的用户和用户所属的用户组。操作系统使用专用数据结构来表示用 户的权限——访问令牌(Access Token)。访问令牌包括两个部分:一个是令牌所表示的用户,包括 用户标识符(SID),用户所属的用户组等;另一部分是“权限”(Privilege)。
在进程访问安全对象时,会用到SID。每个安全对象都有访问控制列表(ACL),ACL说明了 哪些用户(使用SID表示)能访问本对象,哪些不能,以及能进行哪种访问等。而“权限”在访 问某个具体的安全对象时并没有作用,其是表示进程是否能够进行特定的系统操作,如关闭系统、 修改系统时间、加载设备驱动等。
……
第1章 Windows应用程序开发入门
1.1 第一个实例程序
1.1.1 start.exe
1.1.2Windows API
1.1.3程序入口函数
1.1.4 start.c代码分析
1.2 编译代码
1.2.1 安装visual Studio
1.2.2 安装Microsoft P1atform SDK
1.2.3集成Microsoft P1atform SDK与Visual C++速成版
1.2.4 WindOWS7SDK与VisualStudio2010
1.2.5 Visual Studio专业版或团队系统版
1.2.6 使用图形化IDE建立工程、进行编译
1.2.7 “解决方案”与“工程
1.2.8 使用命令行工具编译
第2章Windows API概要
2.1 windows数据类型
2.1.1 Windows数据类型示例
2.1.2 windows数据类型与标准C数据类型的关系
2.1.3 windows数据类型与Windows API
2.1.4 windows中的数据结构
2.2windowsAPI的功能分类
2.2.1 系统基本服务
2.2.2系统管理
2.2.3用户界面
2.2.4 图像和多媒体
2.2.5 网络
2.2.6 系统安全
2.2.7 其他功能
2.3 Windows API核心DLL
2.3.1 Kernel32.d11
2.3.2 User32.dll
2.3.3 Gdi32.dll
2.3.4 标准C函数及Crtdlld11
2.3.5 其他DII
2.4 Unicode和多字节
2.4.1 W版本和A版本的API
2.4.2 Unicode与ASCII的转换
2.5 对Windows程序设计规范的建议
第3章开发工具配置与使用
3.1 使用Visual C/C++编译链接工具
3.1.1 编译器c1.exe
3.1.2 资源编译器rc.exe
3.1.3 链接器linlc.exe
3.1.4 其他工具
3.1.5 编译链接工具依赖的环境变量
3.1.6 示例:使用/D选项进行条件编译
3.2 使用Platform SDK
3.2.1 Platform SDK的目录结构与功能
3.2.2 为编译链接工具设置环境变量
3.2.3 Platforrnq SDK工具集
3.2.4 Windows Vista SDK
3.3 编写Makefile
3.3.1 使用nmake.exe构建工程
3.3.2 Makefile实例
3.3.3 注释
3.3.4 宏
3.3.5 描述块:目标、依赖项和命令
3.3.6 makefile预处理
3.3.7 在Platform SDK的基础上使用nmake
3.3 使用winDbg调试
3.4.1 安装WinDbg
3.4.2 编译可调试的程序
……
第4章文件系统
第5章内存管理
第6章 进程、线程的模块
第7章 线程同步
第8章 服务
第9章 图形用户界面
第10章 系统信息的管理
第11章 进程间通信
第12章 Windows Shell程序设计
第13章 Windows GDI
第14章 网络通信与配置
第15章 程序安装与设置
第16章 设备驱动管理与内核通信
第17章 用户、认证和对象安全
第18章 Windows API的内部原理