服务创建服务 - 将SC_MANAGER_CREATE_SERVICE分配给用户

时间:2016-12-09 00:35:28

标签: windows winapi service

我正在尝试创建一个有权创建其他服务的Windows服务。但是我不希望使用管理登录来运行此服务。

用户权利在其他方面非常有限 - 我只需要它就可以根据请求启动服务。

我已经在网上提到SC_MANAGER_CREATE_SERVICE是您现在可以分配和/或更改的权限,但我对如何所做的事情却没有多少看法。提到能够通过subinacl,通过OpenSCManager和 - gulp - sc命令更改各个服务的权限。但是这些示例显示了如何更改单个服务的权限,而不是如何为用户授予SC_MANAGER_CREATE_SERVICE权限。

但是,我注意到CreateService上的文档明确指出它需要管理员权限 - 所以可能根本不可能。

我是否必须使用管理员帐户启动服务?或者有人知道另一招吗?

1 个答案:

答案 0 :(得分:2)

请参阅Service Security and Access Rights:

  

要获取或设置SCM的安全描述符,请使用带有SCManager对象句柄的QueryServiceObjectSecurity和SetServiceObjectSecurity函数。

请注意,拥有创建服务的权限可为您提供有效的管理员访问权限,因为您可以创建一个以本地系统身份运行的服务。因此,您需要注意不要将权限授予不受信任的用户有权访问的帐户,以确保具有该权限的所有帐户都具有强密码,等等。

这也意味着如果您的系统服务受到远程代码执行漏洞的攻击,您还没有获得任何收益,攻击者仍然可以控制您的系统。如果服务具有直接攻击的高风险,则可能明智的做法是使用仅负责需要特殊权限的任务的第二个服务。但是,对于不太可能被直接攻击或被认为相当安全的服务,没有管理员权限(除了创建服务的能力之外)运行可以防止不太严重的漏洞被利用,或者限制非造成的损害与安全有关的错误。

另请参阅服务器故障上的Granting service control manager access permission to user outside of administrator group,答案显示了如何从命令行更改SCM权限。

相关问题