我希望能够允许开发团队在 Win2003 服务器上安装服务。他们已经可以使用受限帐户通过 RDP/FTP 进行连接,但我希望能够授予安装权限。
如果不授予管理员权限,我该如何做到这一点?
(该服务是使用 .NET 框架创建的,因此我们使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe 进行安装)
答案1
委派安装服务的权限会有点困难。全局对象管理器中的服务控制管理器 (SCM) 对象上有一项“SC_MANAGER_CREATE_SERVICE”权限,可以授予用户。
在 Windows Server 2003 之前的 Windows 版本中,无法在 SCM 上更改权限。从 W2K3 SP1 开始,您可以在 SCM 上更改权限。
更改安全性的 API 是设置服务对象安全,更多信息请访问:http://msdn.microsoft.com/en-us/library/aa379589(VS.85).aspx
有关可授予 SCM 的权限以及在 SCM 上设置的默认 DACL 的更多参考信息请参见此处:http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx
简而言之,没有编写代码就无法做到这一点。没有神奇的注册表设置等。但是,如果您可以找人为您编写代码,那么这是完全可行的。
答案2
我认为更大的问题是让开发团队访问他们不管理的服务器。与其试图授予用户权限(SC_MANAGER_CREATE_SERVICE),不如认真考虑给他们自己的机器——哪怕只是一个用来测试的虚拟机,一旦他们说准备好了,真正的管理员就应该将服务安装到生产系统中。
答案3
http://support.microsoft.com/?kbid=288129有一些关于管理服务的信息,但我不认为这可以扩展到包括在不对服务器进行一些重大安全更改的情况下创建任意服务。
如果您创建一个或多个服务,然后按照知识库中所述授予访问权限,您的开发人员可以停止该服务并复制新的二进制文件,这样即使您必须首先创建它们,他们也可以开发/调试服务。
我个人限制我们的开发人员使用测试服务器,并授予他们管理员访问权限。这些小家伙们必须先让我确信他们的程序运行正常,才能访问我的实时服务器!
JR