本地用户查询服务所需的权限

Joe*_*nez 5 permissions service windows-server-2012

我正在尝试编写一个应用程序,它作为服务器上的本地用户运行,需要访问枚举服务,甚至可能控制它们(启动/停止)。

成为管理员组的一部分是该用户能够访问此功能(通过ServiceController类使用)的唯一方式吗?如果更容易,我什至可以枚举服务列表(交互式启动/停止不是一个显示停止器)。将用户添加到高级用户组是否可行?

谢谢!

编辑:http : //msdn.microsoft.com/en-us/library/windows/desktop/ms685981(v=vs.85).aspx#access_rights_for_the_service_control_manager

Rya*_*ies 6

Power Users 组永远不是答案。这是一个古老的遗产。最好只是认为它不存在。

如果您想以精细的方式设置单个 Windows 服务的权限,您可以,但它远不如设置文件权限那么简单/直观

要查看 Windows 服务的当前权限:

C:\Users\Ryan>sc sdshow netlogon

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)
Run Code Online (Sandbox Code Playgroud)

例如,要设置单个 Windows 服务的权限,以便非管理员用户可以启动和停止特定服务:

sc sdset netlogon "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
[SC] SetServiceObjectSecurity SUCCESS
Run Code Online (Sandbox Code Playgroud)

这看起来很糟糕,不是吗?该粘性物质称为 SDDL - 安全描述符定义语言。

这篇文章是关于如何解释 SDDL 和做你想做的事情的很好的入门读物。

您还可以使用安全模板和组策略来完成同样的事情:

安全模板