服务安全

【勇芳软件工作室】汉化HomePreviousNext

当进程使用OpenSCManager函数打开已安装服务的数据库的句柄时,它可以请求不同类型的访问。系统在授予所请求的访问权限之前执行安全检查。允许所有进程对数据库进行以下访问:

*SC_MANAGER_CONNECT

*SC_MANAGER_ENUMERATE_SERVICE

*SC_MANAGER_QUERY_LOCK_STATUS

这使得任何进程都可以打开一个可以在调用OpenServiceEnumServicesStatusQueryServiceLockStatus函数中使用的SCManager对象的句柄。只有具有管理员权限的进程才能打开可由CreateServiceLockServiceDatabase功能使用的SCManager对象的句柄。

当进程使用OpenService功能时,系统会执行访问检查。访问不同用户的访问类型取决于与服务对象关联的SECURITY_DESCRIPTOR结构。当服务由CreateService功能安装时,SCM创建一个服务对象的安全描述符。您可以使用QueryServiceObjectSecuritySetServiceObjectSecurity函数来查询和设置服务对象的安全描述符。服务对象的默认安全描述符允许以下访问:

*所有用户都有SERVICE_QUERY_CONFIG,SERVICE_QUERY_STATUS,SERVICE_ENUMERATE_DEPENDENTS,SERVICE_INTERROGATE和SERVICE_USER_DEFINED_CONTROL访问。

* Power Users组和LocalSystem帐户的成员具有SERVICE_START,SERVICE_PAUSE_CONTINUE和SERVICE_STOP访问权限,以及授予所有用户的访问权限。

*管理员和系统操作员组的成员具有SERVICE_ALL_ACCESS访问权限。