如何允许非管理员用户访问 winrs?

如何允许非管理员用户访问 winrs?

我有 Windows Server 2012(和 Server 2008,但优先级更高),可以使用发送消息. txwinrm 库内部使用 WinRS 协议。我必须使用最低权限用户来监视它,但不知道如何为他配置访问权限。

我所做的就是为我的用户配置远程 Powershell 会话,但看起来 winrs 和 powershell 会话有不同的安全描述符:

Invoke-Command -ComputerName 192.168.173.206 -Credential (credential Administrator $pwd) -ScriptBlock { 2 + 2}
# gives 4
Invoke-Command -ComputerName 192.168.173.206 -Credential (credential lpu1 $pwd) -ScriptBlock { 2 + 2}
# gives 4
winrs -r:192.168.173.206 -u:Administrator -p:$pwd 'powershell -command "2+2"'
# gives 4
winrs -r:192.168.173.206 -u:lpu1 -p:$pwd 'powershell -command "2+2"'
# Gives Winrs error: Access is denied.

我的用户配置如下:

(Get-Item WSMan:\localhost\Service\RootSDDL).value
# O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;S-1-5-21-3231263931-1371906242-1889625497-1141)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)
(Get-PSSessionConfiguration -name Microsoft.Powershell).SecurityDescriptorSddl
# O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;S-1-5-21-3231263931-1371906242-1889625497-1149)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)

(在每个安全描述符中,我的用户被授予对受保护对象的一般访问权限)。

那么我应该设置什么安全描述符才能使我的 winrs 查询对非管理员用户起作用?

更新:最近我发现我可以检索有关 winrm shell 的信息

  winrm enumerate shell
Shell
    ShellId = 3793B153-CCCF-4500-99FB-8534074E1738
    ResourceUri = http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd

但我在目录中没有找到这样的资源 URI WSMan:\localhost\Plugin。:(文档状态:

资源 URI 可用于检索特定于 shell 实例的插件配置。

但是如何检索该插件配置以及如何更改它?

答案1

有效的是

winrm configSDDL default

然后允许读取和执行权限。但奇怪的是,那里的设置与 中的相同WSMan:\localhost\Service\RootSDDL。这可能是因为 winrm configSDDL 重新加载了一些缓存或其他东西,我不知道...

答案2

您可以使用以下方式添加用户:

winrm configSDDL http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd

来源

答案3

您必须将 winrm 服务器上的用户添加到“远程管理用户”组

就这么简单。

相关内容