You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible以ansible用户连接受控节点时复制文件到ubuntu家目录失败如何解决

问题解答

错误原因

你用ansible作为远程登录用户连接受控节点时,任务默认以ansible普通用户身份执行,而/home/ubuntu目录默认仅允许所有者(ubuntu用户)或root用户写入,ansible用户没有权限操作其他用户家目录的内容,因此复制任务报错。

可行性说明

你的需求完全可以实现,不需要调整现有用户权限架构,你已经给ansible用户配置了免密sudo权限,只需要在Playbook中增加提权配置即可。

修复方案

你可以选择全局开启sudo提权,或者仅给需要操作其他用户目录的单任务开启提权,两种配置都可以:

方式1:单任务开启提权(更符合权限最小化原则)

仅给需要操作ubuntu家目录的复制任务开启提权,其他任务仍以普通ansible用户身份执行:

---
- name: script transfer practice
  hosts: devdebugs
  remote_user: ansible

  tasks:
  - name: Copy file with owner and permissions
    ansible.builtin.copy:
      src: /home/ubuntu/files/test.txt
      dest: /home/ubuntu/test.txt
      owner: ubuntu
      group: ubuntu
      mode: '0600'
    # 单任务开启sudo提权,调用ansible用户的免密sudo权限切换到root执行操作
    become: yes
...

方式2:全局开启提权

如果整个Playbook的任务都需要操作系统级资源、其他用户目录,可以在Play层级全局开启提权:

---
- name: script transfer practice
  hosts: devdebugs
  remote_user: ansible
  # 全局开启sudo提权,当前Play下所有任务默认都会以root身份执行
  become: yes

  tasks:
  - name: Copy file with owner and permissions
    ansible.builtin.copy:
      src: /home/ubuntu/files/test.txt
      dest: /home/ubuntu/test.txt
      owner: ubuntu
      group: ubuntu
      mode: '0600'
...

架构合理性说明

你当前用专用ansible用户做运维操作、普通业务用户ubuntu不开放sudo权限的设计是符合运维安全规范的,不需要更换实现方式,只要补充提权配置即可满足需求。

内容的提问来源于stack exchange,提问作者Bix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 01:54:00