![Win 2008 Server 发生了哪些变化,导致 Samba rpc 控制不再起作用?](https://linux22.com/image/587076/Win%202008%20Server%20%E5%8F%91%E7%94%9F%E4%BA%86%E5%93%AA%E4%BA%9B%E5%8F%98%E5%8C%96%EF%BC%8C%E5%AF%BC%E8%87%B4%20Samba%20rpc%20%E6%8E%A7%E5%88%B6%E4%B8%8D%E5%86%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我很高兴地使用 Sambanet rpc service ...
从我的 Linux 机器上控制 Windows 2003 服务器上的服务,但是现在控制 Windows 2008 服务器却出现WERR_ACCESS_DENIED
错误。
看来 WinXP(使用sc
)也存在此问题,但 Win7 上一切正常。Windows 2008 服务器允许远程访问的方式是否发生了变化?在客户端(Samba)端可以采取什么措施来解决这个问题?
提前致谢!
(Samba 3.6.3,Win2008R2)
答案1
看起来权限自 2003 SP1 以来已经发生了变化;”非管理员的服务控制管理器安全性“有更多信息和修复程序,允许经过身份验证的用户列出服务。
我正在尝试使用“sc sdshow”和“sc sdset”命令,以便能够从我的 unbuntu 机器控制 win7 home 上的 cygwin sshd 服务。该文章中的第一个 sdset 命令使我能够列出来自 linux 的一些服务,因此它很有希望。
我会尝试回复更详细的说明,但这应该足以帮助您入门。祝您好运。
更新
好的;这就是我所做的,它似乎奏效了。请注意,您必须在提升的“cmd.exe”中运行这些命令 - 在开始气泡中搜索“cmd”,右键单击,以管理员身份运行。
首先,获取服务控制管理器的当前安全描述符:
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)
这几乎与上面的链接中列出的完全一样。输出的形式是
D:(DACL)(DACL)(...)S:(SACL)(SACL)(...)
。每个 DACL 都构造为;
-delimited 字符串。第一个、第三个和最后一个字段是重要部分。第一个字段表示A
“允许”,D
第三个字段表示“拒绝”。最后一部分是知名用户或组的缩写,或者是用户或组的 SID。第三个字符串是一系列权限 - 每对字符一个权限。完整细分位于“MSDN 文章:ACE 字符串“。对于服务控制管理器,“权限”字段中字符的含义略有不同,对于服务也不同。如果您交叉引用第一个链接中的三个表,您将明白我的意思。例如,命令(A;;CC;;;AU)
给出的sc sdshow scmanager
意思是允许经过身份验证的用户连接到服务控制管理器。本文建议将其扩展为(A;;CCLCRPRC;;;AU)
“CC”、“LC”、“RP”和“RC”——“连接”、“枚举”、“查询锁定状态”和“读取控制”。基本上,我们只是赋予“AU”——“经过身份验证的用户”与“IU”——“交互式用户”——登录到 Windows 的用户相同的权限。当您使用“sc sdset”更改 DACL 时,您替换整个条目,因此您只需修改对您的目的很重要的 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)"
请注意我刚刚如何替换与“经过身份验证的用户”相关的 DACL。
好的,现在是简单的部分。为此,您需要“subinacl”——如果您没有,您可以从各种 Microsoft 网站下载。(您可以使用“sc sdset”,但“subinacl”更简单。不幸的是,“subinacl”仅适用于实际服务,而不适用于服务控制管理器,因此这是第一步。)我个人稍微偏离了文章,我没有授予我的用户对服务的权限,而是创建了一个本地组,并将自己添加到其中。
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”——我认为这相当于一个错误对话框,显示“错误:成功”。在 win7 机器上验证服务的状态明确表明我现在可以从我的 linux 机器控制该服务。
注意:向服务操作员组授予服务控制管理器的额外权限可能是明智之举 - 我确信对“经过身份验证的用户”的权限限制是有原因的 - 并将 sshd 上的权限限制为启动和停止服务所需的权限。我很高兴它能正常工作,这是一个家庭网络,所以我完成了。