Chef PowerShell_script是否具有有限的权限?

时间:2015-06-25 22:17:34

标签: powershell chef chef-recipe

我遇到过几种情况,在一个带有powershell_scipt的Chef配方中,一个命令似乎失败了,而如果我在Chef外面的powershell中运行相同的命令,那么同样的命令就可以了。

这两个特别是" regedit",我试图用来设置应用程序兼容性的密钥,另一个是" net use z:...."创建映射驱动器。如果我在powershell中运行它们,这两个似乎都可以正常工作,但如果我在powershell_script中的配方中使用它们,它们似乎什么都不做。

所以我想知道这是因为Chef在某些较低权限级别运行powershell_script内部的命令?

如果是这样,我该如何更改它以便regedit和net use能够正常工作?

谢谢, 吉姆

编辑1:这似乎适用于添加我需要的注册表项:

registry_key "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags" do
  values [{
    :name => "{2b9034f3-b661-4d36-a5ef-60ab5a711ace}",
    :type => :dword,
    :data => 00000004
  }]
  action :create
end

这会阻止我在运行Sharepoint安装程序时获得的兼容性弹出窗口。

编辑2:我希望这没关系,但是为了记录和更多的可见度,并希望我记得这一点,我发现了这一点。在Windows和Chef中映射驱动器:

Mount windows shares on a windows node with Chef

https://tickets.opscode.com/browse/CHEF-1267

我还没有尝试过,但这似乎是我的驱动器映射需要的答案......希望......

1 个答案:

答案 0 :(得分:2)

默认情况下,Chef客户端服务作为本地系统(SYSTEM)运行。

在Windows中,该用户在本地系统上拥有完全权限,基本上是root,但在网络上,它会作为计算机对象进行身份验证。

因此,您尝试使用regedit更改某些内容,例如HKEY_CURRENT_USER,然后您需要记住代码不会看到相同的"当前用户"就像你以交互方式运行它一样。另外,regedit是一个.exe;你应该通过PowerShell提供程序或.Net对象真正做到你需要的东西。

对于net use,您正尝试映射驱动器。计算机帐户可能没有您用户拥有的共享权利。同样,net.exe是一个单独的可执行文件。 net use将驱动器映射到驱动器号(通常),在我看来,您不应该在配置脚本中执行此操作。您应该直接访问UNC路径,但无论哪种方式,我仍然认为您可能会遇到权限问题。

您可以更改服务的凭据以使用具有您想要的所有权限的用户帐户,但在执行此类操作之前,您应该考虑将工作流程更改为不需要。