Win2008:SC SDSET-如何授予特定本地用户权限以停止和启动特定本地服务?

Win2008:SC SDSET-如何授予特定本地用户权限以停止和启动特定本地服务?

sdset 命令的有用参考在哪里?

我可以读啊读,但我还没有找到一个直接的步骤列表来说明:

服务:应用程序
用户:Joe

授予 Joe 启动/停止/重新启动应用程序的权限

(为什么不能这么简单?)

笔记:sdset 错误会导致服务从服务管理器中消失,并且只有 root/system 才能看到(管理员看不到!)。正确设置这一点很重要。

答案1

不确定您是否仍在寻求帮助。我已经有一段时间没有这样做了。我们不再采用委派服务控制的做法,现在只让少数应用程序所有者成为本地管理员。

您可以使用亚比纳克尔修改服务权限:

subinacl /service SERVICE_NAME /grant=DOMAIN\GROUP=F

使用真正的服务名称(通常没有空格),而不是显示名称(通常有空格)

SC 命令仅在对服务具有完全控制权的情况下才适用于远程服务控制。下面列出了可以委派的所有权限。

  F : Full Control
  R : Generic Read
  W : Generic Write
  X : Generic eXecute
  L : Read controL
  Q : Query Service Configuration
  S : Query Service Status
  E : Enumerate Dependent Services
  C : Service Change Configuration
  T : Start Service
  O : Stop Service
  P : Pause/Continue Service
  I : Interrogate Service
  U : Service User-Defined Control Commands

如果服务器是 2003 SP1 或更高版本,还有一个一次性步骤允许远程控制服务:SP1 更改了服务控制管理器上的默认 ACL。使用 SP1 版本的 ACL,无法远程使用 services.msc。使用以下命令将 ACL 更改回允许远程服务启动停止。它在此处包装,但应作为单个命令输入:sc sdset SCMANAGER D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

有关 2003 SP1 ACL 更改以及 SDDL 来源的更多信息 http://support.microsoft.com/?id=907460

如果 subinacl 产生错误 1783,则进行修补 http://support.microsoft.com/kb/827209

对于 2008 R1/R2 服务器,您可能需要不同的 SCMANAGER SDDL。

答案2

有人在这里对此进行了详尽的解释:

http://msmvps.com/blogs/erikr/archive/2007/09/26/set-permissions-on-a-specific-service-windows.aspx

本质上,您可以使用 Sysinternals PSGETSID 之类的工具获取安全主体的 SID,然后将要与 sc sdset 一起使用的 SDDL 字符串拼凑在一起。

如果您担心它出现问题,您应该导出注册表项的备份副本:

HKLM\SYSTEM\CurrentControlSet\services\<service>  

相关内容