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

Ansible使用become_user报sudo密码错误,但仅用become可正常运行

Ansible切换用户执行Git克隆时sudo密码错误问题

问题现象

  • 不带become_user的Playbook可正常执行:
---
- name: Clone rbenv
  become: yes
  git:
    repo: 'https://github.com/rbenv/rbenv.git'
    dest: /home/mastodon/.rbenv
  • 添加become_user: mastodon后执行失败,报错:FAILED! => {"msg": "Incorrect sudo password"},对应的Playbook:
---
- name: Clone rbenv
  become: yes
  become_user: mastodon
  git:
    repo: 'https://github.com/rbenv/rbenv.git'
    dest: /home/mastodon/.rbenv

环境信息

  • Ansible版本:2.15.3
  • 操作系统:OpenSUSE
  • 已将ansible_become_pass设置为ansible用户的sudo密码
  • 尝试过调整ansible_method、ansible_exe参数,问题未解决

解决办法

1. 调整sudoers权限配置

OpenSUSE默认sudo规则可能限制了ansible用户切换到mastodon用户的权限,需要给执行用户开权限。用visudo编辑sudoers文件:

visudo

添加以下规则(替换ansible为你的实际执行用户):

ansible ALL=(mastodon) NOPASSWD: ALL

如果需要限制命令范围,仅开放git相关权限也可以:

ansible ALL=(mastodon) NOPASSWD: /usr/bin/git

2. 切换成su方式提权

在OpenSUSE环境中,从普通用户切换到另一个普通用户时,默认可能需要目标用户的密码而非当前用户的sudo密码。可以修改become_method为su,并指定mastodon用户的密码:

---
- name: Clone rbenv
  become: yes
  become_method: su
  become_user: mastodon
  become_pass: "{{ mastodon_user_password }}"
  git:
    repo: 'https://github.com/rbenv/rbenv.git'
    dest: /home/mastodon/.rbenv

注意:密码不要明文写入,建议存储在Ansible Vault中保障安全。

3. 先克隆再修改目录权限(替代方案)

如果不想纠结用户切换的权限问题,可以先以root身份完成克隆,再将目录权限修改为mastodon用户所有:

---
- name: Clone rbenv as root
  become: yes
  git:
    repo: 'https://github.com/rbenv/rbenv.git'
    dest: /home/mastodon/.rbenv

- name: Fix rbenv directory ownership
  become: yes
  file:
    path: /home/mastodon/.rbenv
    owner: mastodon
    group: mastodon
    recurse: yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:26:31