我正在实施一本小手册,以将一些apt-packages安装到我的机器上,例如码头工人,git。
这是一个示例任务:
- name: "Docker: install various dependencies"
become: true
tags:
- docker_installation
apt:
# force_apt_get: true # didnt help
name: "apt-transport-https, ca-certificates, curl, software-properties-common"
update_cache: true
state: present
由于我想使用无密码sudo,因此在将执行剧本任务的目标主机上创建了专用用户 ansible 。我试图实现的目的是,仅允许ansible用户执行剧本所需的命令 ,而无需输入密码。
因此,我如下编辑sudoers文件(仅显示非默认值):
root ALL=(ALL:ALL) ALL
ansible ALL=(root) NOPASSWD: /usr/bin/apt-cache, /usr/bin/apt-get update install, /usr/bin/apt
当我以ansible身份在目标主机上ssh时,可以按预期执行与apt相关的命令,而无需提示输入密码。但是,当我执行剧本时,它失败并显示:
升级需要密码
fatal: [elk-dummy]: FAILED! => {
"msg": "Missing sudo password"
}
当我将sudoers条目更改为
ansible ALL=(root) NOPASSWD: ALL
一切正常。
看着这个related post,我希望从日志中获取一些信息,但是我不知道如何处理此消息/原因:
<192.168.2.35>为用户建立SSH连接:可访问
<192.168.2.35> SSH:EXEC ssh -vvv -C -o ControlMaster = auto -o ControlPersist = 60s -o KbdInteractiveAuthentication = no -o PreferredAuthentications = gssapi-with-mic,gssapi-keyex,基于主机的公钥-o PasswordAuthentication = no -o'User =“ ansible”'-o ConnectTimeout = 10 -o ControlPath = / home / lukas / .ansible / cp / 0e1063962c 192.168.2.35'/ bin / sh -c'“'”'chmod u + x /home/ansible/.ansible/tmp/ansible-tmp-1576966035.82-40405969615486/ /home/ansible/.ansible/tmp/ansible-tmp-1576966035.82-40405969615486/AnsiballZ_command.py && sleep 0'“'”''< / p>
<192.168.2.35>为用户建立SSH连接:可访问
<192.168.2.35> SSH:EXEC ssh -vvv -C -o ControlMaster = auto -o ControlPersist = 60s -o KbdInteractiveAuthentication = no -o PreferredAuthentications = gssapi-with-mic,gssapi-keyex,基于主机的公钥-o PasswordAuthentication =否-o'User =“ ansible”'-o ConnectTimeout = 10 -o ControlPath = / home / lukas / .ansible / cp / 0e1063962c -tt 192.168.2.35'/ bin / sh -c'“'”'sudo -H -S -n -u root / bin / sh -c'“'”'“”“”“”“”“” / usr / bin / python3 /home/ansible/.ansible/tmp/ansible-tmp-1576966035.82-40405969615486/AnsiballZ_command.py'“'”'“'”“”“”“”“ && sleep 0'”' “”
我已经看过apt-module的python代码,寻找将要为apt-module执行的其他命令,但我找不到任何命令。
在实现这一目标方面的任何帮助都非常感谢!
我正在运行ansible版本2.9.2。目标主机在Ubuntu服务器18.04上运行。
答案 0 :(得分:1)
Q:“当我将sudoers条目更改为
ansible ALL=(root) NOPASSWD: ALL
时,一切正常。”
A:引用Privilege escalation must be general:
“您不能将特权升级权限限制为某些命令...”