有一个 Windows 服务有时会重新安装。
我需要一个能够启动/停止/重新启动此服务的用户。此用户不是管理员,也不应该是管理员。
如果我使用setacl.exe
,它可以工作,甚至我可以使用sc sdset
,但是在服务重新安装后需要再次调用setacl,但重新安装服务的进程无权运行setacl。
有没有办法授予特定用户重新启动具有特定名称的服务甚至所有服务的权限,并且该权限在服务重新安装后仍然有效?
如果我能够授予用户一些“管理服务”的一般权限,那也很好,但我无法确定这所需的确切权限(如果我将用户添加到管理员组,他可以启动/停止服务,但显然可以做更多的事情)。
答案1
既然您已经了解 SetACL,以及如何使用它来允许用户控制服务,您可以简单地使用计划任务来定期运行 SetACL。
将任务配置为在重新安装后以尽可能小的间隔重复执行,作为用户无法控制服务的最长可接受时间。
编辑
正如你所说,这有点黑客行为;)。
正如 Adam 提到的,另一个选择是使用 GPO 来强制执行您的 ACL。
对于非标准 Windows 服务,您必须安装并运行群组管理控制台,在安装该服务的计算机上。然后执行以下操作:
- 发射GPMC管理控制台在电脑上面
- 编辑现有 GPO,或创建适用于相关计算机的新 GPO
- 扩张政策,Windows 设置,安全设定,系统服务
- 打开相关服务的属性
- 定义启动模式并根据需要编辑权限
答案2
重新启动服务的权限相当简单,你可以使用Subinacl.exe /服务分配权限,例如:
subinacl /service MyServiceName /GRANT=NTDOMAIN\BOB=STOPI
- 年代TOPI = 查询s状态
- 年代电视OPI = 秒吨艺术
- 英石哦PI = sto页
- STO磷我 =页引起/继续
- 停止我=我詢問。
完整列表支持网站。
我认为您遇到的问题是,当删除 MyServiceName 时,ACL 也会随之删除。您可以使用组策略或安全模板来分配可能存在或不存在的服务的权限,从而解决此问题。