【问题标题】:Does Chef powershell_script have limited privileges?Chef powershell_script 的权限是否有限?
【发布时间】:2015-06-26 21:17:01
【问题描述】:

我遇到了几种情况,在带有 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

我还没有尝试过,但这似乎可以满足我的驱动器映射需求......希望......

【问题讨论】:

    标签: powershell chef-infra chef-recipe


    【解决方案1】:

    Chef 客户端服务默认以本地系统 (SYSTEM) 运行。

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

    因此,如果您尝试使用 regedit 更改某些内容,例如 HKEY_CURRENT_USER,那么您需要记住,代码不会像您以交互方式运行它时看到相同的“当前用户”。此外,regedit 是一个 .exe;你真的应该通过 PowerShell 提供程序或 .Net 对象来做你需要的事情。

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

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

    【讨论】:

    • 我理解你所说的,关于我们应该在 Chef 流程之外进行网络使用(映射网络驱动器)和注册表编辑器,但在我们的场景中,他们希望有一种裸机Windows 映像开始,然后远程进行安装。他们不想为特定用途准备机器,例如,他们不想为 Sharepoint 机器提供一个 Windows 映像,而为 Exchange 机器提供另一个 Windows 映像。
    • 对不起,我按了 Enter 键 :)。无论如何,您直接提到了UNC。我怎么做?我的意思是我可以在安装路径中使用说 \\192.168.0.236\foo,而不是映射驱动器,但是使用 UNC 我也可以进行身份​​验证吗?
    • 另外,对于 regedit,您会建议什么替代方案?我正在尝试(并且失败)是powershell_script中的regedit。它没有给我任何错误...它什么也不做(不更改注册表)。
    • 这似乎适用于我需要的注册表更改 - 哎呀,我会在我认为的 OP 中添加它。
    • 在 powershell 中映射驱动器的方法是使用New-PSDrive。您应该能够为此提供-Credential 参数,但我再次认为尝试以不同的方式看待问题可能会有所帮助。例如,为什么需要网络驱动器?也许最好在 HTTP 服务器上托管存档,然后在配置期间下载、解压缩并在本地处理文件。
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多