A 【特权】用于比正常的自由访问控制更严格地控??制对对象或服务的访问。系统管理员使用权限来控制哪些用户能够操纵系统资源。当应用程序更改系统资源时使用权限,例如更改系统时间或关闭系统时。
特权是由字符串识别的【本地唯一标识符en】(LUID)。这个64位值在生成它的操作系统上被保证是唯一的,直到系统重新启动。例如,SE_SYSTEMTIME_NAME是一个标识LUID的字符串。特权有三个表示,如下所示。
*字符串名称,跨系统有意义,称为【全球程序名称】(例如SE_SYSTEMTIME_NAME)。
*一个可读的名称,可以在必要时向用户显示。例如,“更改系统时间”。
*不同于计算机的本地表示。
权限提供对大多数用户很少需要的服务的访问。帐户通常具有禁用的权限,并且必须启用它们才能使用。例如,要在本地计算机上设置时间,应用程序必须为SE_SYSTEMTIME_NAME特权设置SE_PRIVILEGE_ENABLED属性。出于安全考虑,在不再需要启用的权限时禁用它。
以下权限由Windows NT定义。
特权 | 描述 |
SE_ASSIGNPRIMARYTOKEN_NAME | 必须分配进程的主令牌。 |
SE_AUDIT_NAME | 需要生成审核日志条目。给这个权限来保护服务器。 |
SE_BACKUP_NAME | 需要执行备份操作。 |
SE_CHANGE_NOTIFY_NAME | 需要接收文件或目录更改的通知。此权限还会导致系统跳过所有遍历访问检查。所有用户默认启用。 |
SE_CREATE_PAGEFILE_NAME | 创建分页文件需要。 |
SE_CREATE_PERMANENT_NAME | 需要创建一个永久对象。 |
SE_CREATE_TOKEN_NAME | 创建一个主令牌是必需的。 |
SE_DEBUG_NAME | 需要调试一个进程。 |
SE_INC_BASE_PRIORITY_NAME | 需要增加进程的基本优先级。 |
SE_INCREASE_QUOTA_NAME | 需要增加分配给进程的配额。 |
SE_LOAD_DRIVER_NAME | 需要加载或卸载设备驱动程序。 |
SE_LOCK_MEMORY_NAME | 需要锁定内存中的物理页面。 |
SE_PROF_SINGLE_PROCESS_NAME | 需要收集单个进程的分析信息。 |
SE_REMOTE_SHUTDOWN_NAME | 需要使用网络请求关闭系统。 |
SE_RESTORE_NAME | 需要执行恢复操作。 |
SE_SECURITY_NAME | 执行许多与安全相关的功能(如控制和查看审核消息)所必需。此权限将其持有者标识为安全运营商。 |
SE_SHUTDOWN_NAME | 需要关闭本地系统。 |
SE_SYSTEM_ENVIRONMENT_NAME | 需要修改使用这种类型的内存来存储配置信息的系统的非易失性RAM。 |
SE_SYSTEM_PROFILE_NAME | 需要收集整个系统的分析信息。 |
SE_SYSTEMTIME_NAME | 需要修改系统时间。 |
SE_TAKE_OWNERSHIP_NAME | 必须在不授予任意访问权的情况下取得对象的所有权。此权限允许将所有者值设置为持有人可以合法分配为对象所有者的值。 |
SE_TCB_NAME | 此权限将其持有人标识为可信计算机基础的一部分。某些受信任的受保护子系统将被授予此权限。 |
SE_UNSOLICITED_INPUT_NAME | 需要从终端设备读取主动请求的输入。 |
提供以下功能来处理特权。
功能 | 描述 |
LookupPrivilegeValue | 允许应用程序检索与本地系统上的特权相对应的LUID。这是该特权的本地表示,应用程序可以在TOKEN_PRIVILEGES和LUID_AND_ATTRIBUTES结构中进行设置。 |
LookupPrivilegeDisplayName | 检索可显示的权限名称。例如,“从远程系统强制关闭”。 |
LookupPrivilegeName | 检索编程权限名称。 |
PrivilegeCheck | 确定客户端应用程序是否具有访问对象(例如SE_REMOTE_SHUTDOWN_NAME)所需的权限。 |