我一直很高兴地使用Samba的net rpc service ...来控制从我的Linux机器的Windows 2003服务器上的服务,但现在控制Windows 2008服务器给我WERR_ACCESS_DENIED错误。
看来WinXP上也存在这个问题(使用sc ),但是从Win7上可以使用。 Windows 2008服务器如何允许远程访问发生了一些变化,在客户端(Samba)有什么可以做的事情来解决这个问题?
提前致谢!
(Samba 3.6.3,Win2008R2)
看起来像自2003 SP1以来的权限已经改变; “ 非pipe理员的服务控制pipe理中心安全性 ”提供了更多信息和修复,允许经过身份validation的用户列出服务。
我正在玩“sc sdshow”和“sc sdset”命令,让我能够从我的unbuntu机器上控制win7家庭中的cygwin sshd服务。 这篇文章中的第一个sdset命令让我能够列出来自linux的一些服务,所以它显示了承诺。
我会尽量回复更详细的说明,但这应该足以让你开始。 祝你好运。
好; 所以这就是我所做的,似乎是做的伎俩。 请注意,您必须在提升的“cmd.exe”中运行这些命令 – search“cmd”的开始气泡,右键单击,以pipe理员身份运行。
首先,获取服务控制pipe理器的当前安全描述符:
sc sdshow scmanager D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
这几乎完全符合上面链接中列出的。 输出forms是D:(DACL)(DACL)(...)S:(SACL)(SACL)(...) 。 每个DACL被构造为一个; – 有限的string。 第一,第三和最后一个字段是重要的部分。 第一个是“允许”的A和D “拒绝”的D 最后一部分是众所周知的用户或组的缩写,或者是用户或组的SID。 第三个string是一系列权限 – 每对字符一个权限。 完整的细分在“ MSDN文章:ACEstring ”。 在“权限”字段中的字符的含义对于服务控制pipe理者来说是有点差别的,并且对于服务来说又是不同的。 如果你交叉引用第一个链接中的三个表格,你会明白我的意思。 因此,例如,由sc sdshow scmanager命令给出的(A;;CC;;;AU)意味着已authentication的用户被允许连接到服务控制pipe理器。 本文推荐将其扩展为“CC”,“LC”,“RP”和“RC” – “连接”,“枚举”,“查询locking状态”和(A;;CCLCRPRC;;;AU) “阅读控制”。 基本上我们只给“AU” – “Authenticated Users”与“IU” – “Interactive Users”相同的权限 – 那些loginWindows的用户。 当您使用'sc sdset'更改DACL时,您将replace整个条目,因此只需要修改对您而言非常重要的DACL,然后复制其他部分。
sc sdset "D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"
注意我是如何replace与“Authenticated Users”有关的DACL的。
好; 现在是容易的部分。 为此,您需要“subinacl” – 如果您没有它,可以从各个Microsoft网站下载它。 (你可以使用'sc sdset',但是'subinacl'要容易得多,不幸的是'subinacl'只能用于实际的服务,而不是服务控制pipe理器,因此是第一步。)我个人偏离了文章,而不是授予我在服务上的用户权限,我创build了一个本地组,并添加了自己的。
net localgroup "Service Operator" /add net localgroup "Service Operator" "My Login Account" /add
接下来,我给了这个组完全控制sshd服务:
subinacl /service sshd "/grant=Service Operator=F"
在我的Linux机器上,我现在可以启动和停止服务:
beltorak@kryos [~] $ net -S diabolique rpc service stop sshd Enter beltorak's password: .. sshd service is stopped. beltorak@kryos [~] $ net -S diabolique rpc service start sshd Enter beltorak's password: .............................. Failed to start service: sshd [WERR_OK]
我不知道为什么它说“失败:WERR_OK” – 我认为这相当于一个错误对话,说:“错误:成功”。 validation在win7机器上的服务状态,肯定表明我现在可以控制从我的Linux机器的服务。
注意:向服务操作员组授予对服务控制pipe理员的额外权限可能是明智的 – 我确定限制“已validation用户”的权限是由于某种原因而完成的 – 并且将sshd的权限限制为只是那些需要开始和停止服务。 我只是很高兴得到它的工作,这是一个家庭networking,所以我完成了。