Ansible 无法设置临时文件的权限

Ansible Failed to set permissions on the temporary files

我想制作一个剧本,向我显示当前正在使用的用户。

这是我的 ansible cfg:

[defaults]
inventory=inventory
remote_user=adminek

[privilege_escalation]
become=true

[ssh_connection]
allow_world_readable_tmpfiles = True
ssh_args = -o ControlMaster=no -o ControlPath=none -o ControlPersist=no
pipelining = false

这是我的剧本

---
- name: show currenty users 
  hosts: server_a
  
  tasks:
    - name: test user - root
      shell: "whoami"
      register: myvar_root

    - name: test user - user2
      become: true
      become_user: user2    
      shell: "whoami"
      register: myvar_user2


    - name: print myvar root
      debug:
        var: myvar_root.stdout_lines

    - name: print myvar user2
      debug:
        var: myvar_user2.stdout

taks“test user - root”工作正常并给我输出

ok: [172.22.0.134] => {
    "myvar_root.stdout_lines": [
        "root"
    ]
}

taks "test user - user2" 给我输出

fatal: [172.22.0.134]: FAILED! => {"msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chown: changing ownership `/var/tmp/ansible-tmp-1621340458.2-11599-141854654478770/': Operation permited\nchown: changing ownership `/var/tmp/ansible-tmp-1621340458.2-11599-141854654478770/AnsiballZ_command.py': Operation permited\n}). For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}

说明: adminek- sudoer 用户 User2 - 非 sudoers 用户

OS - 科学 Linux 版本 6.9

此外,我在 ubuntu 18.04 上遇到了类似的问题,但是当我安装 acl 时开始工作

有人知道怎么回事吗? 感谢您的帮助!

以下选项之一应该可以解决您的问题:

  • 确保 sudo 安装在远程主机上
  • 确保 acl 安装在远程主机上
  • 取消注释 /etc/ansible/ansible.cfg 中的以下行:
allow_world_readable_tmpfiles = True
pipelining = True

@F1ko 谢谢回复

我做了你不会做的事,我在我的主机上安装了 acl,但窃取是错误的。 我加到visudo了。

Defaults:user2 !requiretty
Defaults:adminek !requiretty

我不知道它是否安全,但可以工作。