使用ansible的sudo用户不接受密码
password not being accepted for sudo user with ansible
我是 运行 作为 sudo 用户的 ansible 剧本(强制输入 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
关于我可能做错了什么的想法?
在“sudo su - root
”中,root 特权是由 sudo
而不是 su
获得的(这就是为什么后者不要求 root 密码,因为它被调用通过已经处于 root 用户角色的进程)。
但是,在您的设置中您指定了 become_method: su
,它需要 root 的密码。
因此解决方法是将 become_method
更改为 sudo
(或者,如果您知道 root 的密码,请输入该密码而不是您的用户密码)。
sudo su - root
与 become_method: su
不同。
su
尝试切换到另一个用户(默认情况下为 root)并要求您以他们的身份进行身份验证(即输入他们的密码)。 sudo
类似,只是它会提示输入 您的 密码。为防止这成为安全灾难性问题,sudo
仅适用于已通过 /etc/sudoers
.
明确授予访问权限的用户
当您使用 sudo su - root
时,您表示:
- 通过
sudo
. 将我的权限提升为 root
- 使用这些提升的权限,切换到 root 用户帐户。
现在,当您在 Ansible 中指定 become_method: su
时,您是在告诉 Ansible 使用 su
而不是 sudo
。实际命令会有所不同,但您可以将其视为 运行 命令 su - root
。看看有什么不同?
您应该改用 become_method: sudo
,或者完全删除它,因为它是默认设置。
我是 运行 作为 sudo 用户的 ansible 剧本(强制输入 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
关于我可能做错了什么的想法?
在“sudo su - root
”中,root 特权是由 sudo
而不是 su
获得的(这就是为什么后者不要求 root 密码,因为它被调用通过已经处于 root 用户角色的进程)。
但是,在您的设置中您指定了 become_method: su
,它需要 root 的密码。
因此解决方法是将 become_method
更改为 sudo
(或者,如果您知道 root 的密码,请输入该密码而不是您的用户密码)。
sudo su - root
与 become_method: su
不同。
su
尝试切换到另一个用户(默认情况下为 root)并要求您以他们的身份进行身份验证(即输入他们的密码)。 sudo
类似,只是它会提示输入 您的 密码。为防止这成为安全灾难性问题,sudo
仅适用于已通过 /etc/sudoers
.
当您使用 sudo su - root
时,您表示:
- 通过
sudo
. 将我的权限提升为 root
- 使用这些提升的权限,切换到 root 用户帐户。
现在,当您在 Ansible 中指定 become_method: su
时,您是在告诉 Ansible 使用 su
而不是 sudo
。实际命令会有所不同,但您可以将其视为 运行 命令 su - root
。看看有什么不同?
您应该改用 become_method: sudo
,或者完全删除它,因为它是默认设置。