使用ansible在远程机器上的用户权限

user privileges on remote machine using ansible

我正在尝试 运行 在远程服务器上使用 ansible 2.1 执行以下任务(运行安装 debian 软件包需要 sudo 权限)。但是,当我 运行 命令时,它似乎失败了,并在下面复制了错误。如果您有任何关于如何进一步解决此问题的想法,我们将不胜感激。

任务

---
- name: transferring artifact to server 
  local_action: shell ls -d /tmp/test/target/*.jar
  register: test_build
- copy: src={{ test_build.stdout }}  dest=/home/ubuntu/ owner=ubuntu group=ubuntu mode=644 backup=yes
  become: true
  become_user: ubuntu 
  become_method: sudo

错误

fatal: [testserver]: FAILED! => {"failed": true, "msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user. For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}

我将 ansible.cfg 中的 allow_world_readable_tmpfiles 标志设置为 True(在 absible 2.1 中默认为 False)。这允许 ansible 将其视为警告而不是允许我继续的错误。其他建议的选项(我没有尝试包括使用流水线或安装 acl 工具)。

"Ubuntu" 是非特权用户帐户。您不是以 sudo 的身份调用复制命令,而是以 sudo 的形式将 "su" 调用到非特权帐户中,而 运行 的复制命令是 "ubuntu"(非特权)。 Ansible 完全按照您的吩咐去做。

您不应该使用非特权帐户成为非特权帐户。这是 Ansible 中的一个安全漏洞。为什么不以 ubuntu 而不是您开始时使用的任何用户身份登录?