Windows 上的 Ansible:成为/成为用户权限/所有者问题

lan*_*.io 2 windows file-permissions ansible ansible-2.x

我想要执行一些不需要使用管理员帐户的操作。例如,克隆 git 存储库或创建文件夹。

我试过这个:

  - name: Create gogo1 directory
    win_shell: mkdir c:\tmp\gogo1
    become: yes
    become_user: vagrant
    vars:
      ansible_become_pass: vagrant
Run Code Online (Sandbox Code Playgroud)

这会创建所需的目录,但是当我以 vagrant 用户身份登录并尝试删除它时,我得到:

您需要提供管理员权限才能删除此文件夹。

用户 Vagrant 没有被授予对文件夹 gogo1 的任何权限。我还需要这样做:

  - name: Change owner of gogo1
    win_owner:
      path: c:\tmp\gogo1
      user: vagrant
      recurse: yes
Run Code Online (Sandbox Code Playgroud)


win_psexec按预期使用作品。它创建目录,为用户 vagrant 授予权限,因此我可以删除它,而不会出现上述消息提示。

- name: Create gogo2 directory
    win_psexec: 
      command: cmd /k "cd c:\tmp && mkdir gogo && exit"
      username: vagrant
      password: vagrant
Run Code Online (Sandbox Code Playgroud)

我如何使用becomebecome_user创建一个文件夹(或克隆一个 git 存储库)并为用户提供所有必要的权限和所有权(就像这样win_psexec做?

Tj *_*lie 7

为了按照您想要的方式工作,您需要它以交互方式登录,以便在创建文件夹时加载用户的配置文件。

为此,您可以尝试将 login_flags (Ansible 2.5+) 设置为如下所示:

- name: Create gogo1 directory
  win_shell: mkdir c:\tmp\gogo1
  become: yes
  become_user: vagrant
  become_flags: logon_type=interactive logon_flags=with_profile
  vars:
    ansible_become_pass: vagrant
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关Become_flags的所有详细信息:
http://docs.ansible.com/ansible/latest/user_guide/become.html