【发布时间】:2020-06-17 11:16:42
【问题描述】:
(已经有一些关于此的问题,但没有解决方案对我有用)
在我工作的服务器上,我们必须“sudo su - webapps”,然后将我们的命令作为 webapps 运行。 我相信 Ansible 没有提供执行此操作的本机方式(仅 sudo 可用,但系统管理员限制了我可以运行它的命令列表,su 可用于 Ansible,但不能在服务器上单独运行)。
我试过了 https://www.coveros.com/ansible-privledge-escalation-using-sudo-su/
[privilege_escalation]
become_exe=sudo su -
有剧本:
---
- hosts:
- test
become: yes
become_user: webapps
become_method: su
tasks:
- name: Updates file
copy:
src: a.txt
dest: dest/a.txt
运行它会给出:
SSH:EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="myUser"' -o ConnectTimeout=10 -o ControlPath=/Users/lmoreau/.ansible/cp/d895b40f7e -tt myServer '/bin/sh -c '"'"'sudo su - webapps -c '"'"'"'"'"'"'"'"'/bin/sh -c '"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'" '“'回声 成为成功-nxilvumwmfikgyuisutwiwobidrgqpao; /usr/bin/python /var/tmp/ansible-tmp-1583355901.6967812-200466745901442/AnsiballZ_setup.py'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'"'" '"'"'"'"'"'"'"'"'"''"'"'"'"'"'"'"'"' && 睡眠 0'"'"''
...
"msg": "等待提权提示超时(12s):\r\nWe 相信你已经收到了当地的常规讲座 系统\r\n管理员。通常归结为这三个 事情:\r\n\r\n #1) 尊重他人的隐私。\r\n #2) 思考 在你输入之前。\r\n #3) 强大的力量就是伟大的 责任。\r\n\r\n"
另一种尝试:
[privilege_escalation]
become_exe=’sudo su - ‘
"module_stdout": "/bin/sh: 'sudo: command not found\r\n", "msg": "MODULE FAILURE\n查看 stdout/stderr 了解确切的错误",
不覆盖 become_exe:
“su”方法给出“超时(12s)等待提权 提示:“
“sudo”方法给出“msg”:“缺少sudo密码”
注意:我没有我想成为的帐户的密码,也不应该有。
如何使用 Ansible 完成与手动操作相同的操作?
【问题讨论】:
-
这将成为一个常见问题解答:ansible does not tolerate restricted become commands,但欢迎您尝试一些竞争性的become plugins,看看它们是否更符合您的安全要求
标签: ansible