【问题标题】:password not being accepted for sudo user with ansible使用ansible的sudo用户不接受密码
【发布时间】:2016-11-11 08:17:25
【问题描述】:

我正在以 sudo 用户身份运行 ansible playbook(强制使用 sudo 密码) - 但是,即使我可以在远程服务器上执行以下操作(使用相同的密码),我收到的响应指出 su 密码不正确我用ansible试过):

sudo su - root

错误信息

 fatal: [testserver]: FAILED! => {"failed": true, "msg": "Incorrect su password"}

主机

[webservers]
testserver ansible_ssh_host=ec2-52-87-166-241.compute-1.amazonaws.com ansible_ssh_port=9876

ansible 命令

ansible-playbook test_playbook.yml -i hosts --ask-become-pass -vvv

test_playbook

---
- hosts: all
  gather_facts: no
  remote_user: testuser
  become: yes
  become_method: su
  become_user: root
  any_errors_fatal: true

  tasks: 
  - group: 
       name: devops
       state: present
  - name: create devops user with admin privileges

    user: 
      name: devops
      comment: "Devops User"
      uid: 2001
      groups: devops

有什么想法我可能做错了吗?

【问题讨论】:

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


    【解决方案1】:

    在 'sudo su - root' 中,root 特权是由 sudo 而不是 su 获得的(这就是为什么后者不要求 root 密码,因为它是由已经在角色中的进程调用的root 用户)。

    但是,在您的设置中,您指定了 become_method: su,它需要 root 的密码。

    因此解决方法是将become_method 更改为sudo(或者,如果您知道root 的密码,请输入该密码而不是您的用户密码)。

    【讨论】:

      【解决方案2】:

      sudo su - rootbecome_method: su 不同。

      su 尝试切换到另一个用户(默认情况下,root)并要求您以他们的身份进行身份验证(即输入他们的密码)。 sudo 类似,只是它提示输入您的 密码。为防止这成为安全灾难性问题,sudo 仅适用于已通过 /etc/sudoers 明确授予访问权限的用户。

      当您使用sudo su - root 时,您是在说:

      1. 通过sudo 将我的权限提升为root。
      2. 使用这些提升的权限,切换到 root 用户帐户。

      现在,当您在 Ansible 中指定 become_method: su 时,您是在告诉 Ansible 使用 su 而不是 sudo。实际的命令会有所不同,但您可以将其视为运行命令su - root。看看有什么不同?

      您应该改用become_method: sudo,或者完全删除它,因为它是默认设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 2020-12-20
        • 2016-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多