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

时间:2016-10-09 23:14:47

标签: ansible ansible-playbook ansible-2.x

我试图在远程服务器上使用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"}

2 个答案:

答案 0 :(得分:2)

“Ubuntu”是一个无特权的用户帐户。你不是以sudo的身份调用copy命令,而是将su“调用为sudo进入非特权帐户并将复制命令作为”ubuntu“(无特权)运行。 Ansible正在做你告诉它的。

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

答案 1 :(得分:0)

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