【问题标题】:Privilege elevation in Windows with ansible使用 ansible 在 Windows 中提升权限
【发布时间】:2019-02-18 18:08:30
【问题描述】:

我正在尝试以管理员身份在 Ansible 中启动一些命令。 根据Ansible docs

您可以使用与 ansible_user 相同的用户来绕过这些限制并运行 WinRM 会话中通常无法访问的命令。

但这对我不起作用。每次我尝试运行以下剧本时:

- hosts: jenkins-win
  gather_facts: no
  tasks:

    - win_whoami:
      become: yes
      become_user: foo

我收到Failed to become user foo: Exception calling \"RunAsUser\" with \"7\" argument(s): \"LogonUser failed (The user name or password is incorrect, Win32ErrorCode 1326)\"

用户fooAdministrators 组的成员。如果我单击带有 RMB 的图标并选择“以管理员身份运行”,我会收到 UAC 提示,而无需输入密码。如果我禁用 UAC,该命令将以管理员身份运行。

如果我将ansible_become_useransible_become_password 分别设置为foopassword,那么一切正常。我想避免设置ansible_become_password,因为我已经通过 WinRM 登录。

我正在使用 ansible 2.7.6、WinRM 与 CredSSP 和 Windows Server 2016。

【问题讨论】:

    标签: windows ansible


    【解决方案1】:

    尝试添加

    become_method=runas
    

    ansible.cfg 文件。

    【讨论】:

    • 也许你需要mydomain\foo 作为become_user
    • 很遗憾也没有用。
    【解决方案2】:

    看来问题已经在ansible mailing list上得到解答

    回答您是否需要密码的问题。 runas become 方法是 Ansible 对 runas 可执行文件 https://technet.microsoft.com/en-us/library/bb490994.aspx 的实现,其中需要用户名和密码。调用的内部 Win32 API 需要设置用户名和密码,我们无法绕过它。最后,您确实需要为普通帐户指定密码,但如果您在 devel 分支上,还有另一个选项。您可以通过将 SYSTEM 设置为 become_user 来成为 SYSTEM 帐户,这不需要密码。 SYSTEM 帐户就像 Windows 上的 root 一样,几乎可以做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2019-09-24
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多