Ansible “能用吗?”;sudo su-“;如果不允许sudo用户运行任意脚本?
我正在尝试使用Ansible在几个远程机器上自动化软件安装和设置。我在机器上的个人用户帐户已锁定,但我可以在手动登录时使用Ansible “能用吗?”;sudo su-“;如果不允许sudo用户运行任意脚本?,ansible,sudo,Ansible,Sudo,我正在尝试使用Ansible在几个远程机器上自动化软件安装和设置。我在机器上的个人用户帐户已锁定,但我可以在手动登录时使用sudo su-成为root用户。一旦我是root用户,我就可以运行类似于yum-install-git和类似的命令 当我尝试通过Ansible执行此操作时,我尝试了以下方法来使用Ansible的yum模块: - name: install Git yum: name: git state: present become: yes become_m
sudo su-
成为root用户。一旦我是root用户,我就可以运行类似于yum-install-git
和类似的命令
当我尝试通过Ansible执行此操作时,我尝试了以下方法来使用Ansible的yum
模块:
- name: install Git
yum:
name: git
state: present
become: yes
become_method: sudo
become_user: root
become_exe: "sudo su -"
当我运行此命令时,它失败了,错误是我的用户不允许运行该命令
sudo su - root /tmp/foobarbazblablabla
发生的情况是Ansible将所有的Yum命令放入一个临时脚本文件,然后尝试使用been方法/exe运行该脚本文件
事实证明,我的用户有权运行sudo su-
,但不能使用sudo
或sudo su-
运行任意脚本,因此Ansible无法运行上述操作
我最终使用了这样一个丑陋的解决方法:
- name: install Git
shell:
cmd: |
sudo su - <<EOF
yum install -y git
EOF
更新如果运行sudo-l
,将显示:
User foo may run the following commands on this host:
(root) /bin/kill
(root) /bin/su - bar
(root) su -
我想这会对你有用
- name: install Git
yum:
name: git
state: present
become: yes
become_method: sudo
become_exe: "sudo su - /bin/bash -c"
也许你把它复杂化了?这样试试看-
- name: install Git
become: yes
become_user: root
yum:
name: git
state: present
或者最坏的情况是
- name: install Git
become: yes
become_user: root
shell: yum install -y git
这有帮助吗?我在
teamviewerpasswd
上遇到了类似的问题,这也不允许我使用been:true
运行。此任务定义用于使用ansible设置teamviewer密码:
- name: set teamviewer login to password only
become: true
become_method: sudo
become_flags: 'su - root /bin/bash -c'
command: 'teamviewer passwd {{ teamviewer_password }}'
这将运行:
sudo su - root /bin/bash -c 'teamviewer passwd Th3Passw0r8'
附带说明:如果使用
shell
-任务而不是命令,则可以跳过变成*
-的内容。但随之而来的是一个更糟糕的警告:用你的密码逃离地狱。不要去那里。只需将此添加到剧本中:
become: yes
become_method: su
在主机服务器上运行playbook export Under env variable之前:
ANSIBLE_BECOME_EXE=’sudo su -‘
这是参考资料。如果你发布了sudo-l
它说了什么?我已经在问题中添加了sudo-l
的输出。这篇文章说ANSIBLE\u been\u EXE='sudo su-'
帮助我尝试过,结果是我的用户不允许运行sudo su-/bin/bash
。我可以运行普通的sudo su-
,但不能使用任何附加命令。询问我们的安全团队是否可以授予我运行sudo su-/bin/bash
的权限以使这项工作正常进行可能是值得的…@nwinkler最终,如果他们锁定了您,那么允许sudo su-
可能是一个意外。出于可审核性的原因,sudo总是比su好,因此如果他们阻止sudo的使用,那么允许sudo su
似乎是无意的。@MillerGeek当ansible运行您的playbook时,将运行什么最终命令?这实际上是我尝试的第一件事,但由于上述错误而失败。您的第二个建议与我现在使用的类似,我将对yum
的调用包装为一个显式的sudo su-
调用,该调用很有效,但其缺点是不使用Ansibleyum
模块及其所有优点。。。
ANSIBLE_BECOME_EXE=’sudo su -‘