我在 Windows Server 2003 64 位系统中安装了 Active Directory。我的一个用户问我,他是否可以通过开始 --> 控制面板 --> 服务来启动和停止 Oracle 和 MYSQL 服务。从那里他可以控制它们手动或自动启动,但现在由于用户权限问题他无法做到这一点。
是否可以在不安装 Windows Server 2003 上的 Oracle 和 MySQL 的情况下在组策略中添加新服务?
答案1
因此,为了确保我理解正确:
- 用户有一台 Windows 机器,上面安装了 Oracle 和 MySQL。
- 该用户不是本地机器管理员。
- 您希望该用户能够停止和启动 Oracle 和 MySQL 服务。
听起来您试图更改组策略中的服务权限,但却从未安装 Oracle 或 MySQL 的计算机上进行更改,这意味着这些服务不会出现在可用服务列表中。
我能想到三种选择:
gpmc.msc
在具有 Oracle 和 MySQL 的计算机上安装组策略管理控制台 ( )。如果你使用的是 Windows XP/2003,请下载并安装带 Service Pack 1 的组策略管理控制台。
如果你使用的是 Windows Vista/7,请下载并安装适用于 Windows 7 Service Pack 1 (SP1) 的远程服务器管理工具。
如果您使用的是 Windows 2008/2008R2,请添加功能组策略管理直接从服务器管理器中获取功能。
安装完成后
gpmc
,您可以在装有 Oracle 和 MySQL 的计算机上编辑 GPO,您将看到列出的服务。在用于编辑 GPO 的计算机上创建一个虚拟服务。
找到
ServiceKeyName
您要更改的服务。(这是服务的“短名称”)。如果您只知道DisplayName
(“长名称”)而不知道ServiceKeyName
(“短名称”),您可以在安装该服务的计算机上找到它,例如:sc GetKeyName "MySQL Service"
在用于编辑 GPO 的计算机上创建一个虚假服务:
sc create
ServiceKeyName
binPath= C:\Windows\system32\notepad.exe
编辑 GPO。
完成后,你可以使用以下命令删除虚假服务:
sc delete
ServiceKeyName
完全忘记 GPO 并直接在服务上设置权限。
首先,看看现有的权限是什么:
C:\Windows\system32>sc sdshow ServiceKeyName
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
哎呀!SDDL 不是很可怕吗?无论如何,这里的想法是将我们需要的权限位添加到这个混乱中。例如,您可以通过添加以下内容允许所有域用户启动、停止、暂停和读取权限:
(A;;RPWPDTRC;;;DU)
或者对于本地用户(“内置用户”):
(A;;RPWPDTRC;;;BU)
因此最终的命令看起来将是这样的:
sc sdset ServiceKeyName D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;RPWPDTRC;;;BU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
好吧,我撒谎了,我在写这篇文章时想到了另一种方法。;-) 您可以使用
subinacl.exe
更简单的方法执行选项 3。但我不知道它是否与 Windows XP/2003 以外的任何更新版本兼容。- 下载并安装子ACL。
使用如下命令:
subinacl /service
ServiceKeyName
/grant=Users=TOP
(
TOP
是subinacl
sTart/stOp/Pause/continue 的语法)
如果我误解了您的问题,请告诉我。