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

使用--ask-pass和--ask-become-pass运行Ansible Playbook遇权限问题求助

解决Ansible切换用户创建文件权限拒绝问题

问题根源

你当前的Ansible命令和Playbook默认会尝试用user1直接sudo到root,但远程主机仅配置了user2拥有免密sudo权限,user1并没有sudo到root的权限,因此触发权限拒绝。而你手动操作是先切换到user2再执行sudo,所以能成功。

具体解决方法

方法1:在Playbook中指定切换到user2后执行操作

修改create.yml,添加become_user和become配置,确保先切换到user2,再执行sudo操作:

- name: Create file in /root
  hosts: rhel8
  remote_user: user1
  become: yes
  become_user: user2
  tasks:
    - name: Create /root/file2 via user2's sudo
      command: sudo touch /root/file2

执行命令时,--ask-pass输入user1的SSH密码,--ask-become-pass输入user2的切换密码(从user1切换到user2需要验证)。

方法2:命令行直接指定目标用户

无需修改Playbook,直接在命令行添加--become-user user2参数,强制Ansible切换到user2后执行任务:

ansible-playbook -i hosts -l rhel8 create.yml --ask-pass --ask-become-pass --become-user user2

方法3:全局配置默认切换用户

如果需要长期使用该配置,修改控制节点的ansible.cfg文件,添加以下内容:

[defaults]
remote_user = user1

[privilege_escalation]
become = yes
become_user = user2
become_method = sudo

之后执行Playbook时,只需输入对应密码即可:

ansible-playbook -i hosts -l rhel8 create.yml --ask-pass --ask-become-pass

验证要点

  • 确认user1能正常切换到user2(比如远程主机执行su user2输入密码后可成功切换)
  • 验证user2的免密sudo配置生效:远程主机用user2执行sudo touch /root/test,确认无需输入密码即可创建文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:17