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>