我必须处理“/etc/sudoers”中的一个无法更改的设置,因为所涉及的服务器由不同的团队管理,他们不想更改它。
我只有先使用 sudo 访问另一个帐户才能获得 root 访问权限。我的帐户只允许运行特定命令“sudo su - admin”(不能附加其他参数)。然后,作为用户“admin”,我可以使用 sudo 正常运行任何 root 命令(例如“sudo vi /etc/shadow”等)或使用“sudo -s”或“sudo su -”等打开 root shell。
我想从我控制的其他服务器上以 root 身份运行 Ansible 临时命令和剧本(例如“成为:是”),但这要求 Ansible 首先运行“sudo su - admin”,然后运行正常的“sudo”命令。
我知道您可以创建自定义的 become 方法。在我看来,这是解决这个问题的方法,但具体的解决方案超出了我的能力范围。有人能帮忙吗?
顺便说一句,如果有帮助的话,“/etc/sudoers”中为我的帐户和“管理员”都设置了“NOPASSWD:”。
答案1
您可以--become --become-user admin
在 ansible adhoc 上使用,或者在 ansible playbook 上使用下面的 yaml。
- name: Run a command as nobody
command: somecommand
become: yes
become_user: admin
become_method: su
如果您需要特定的成为方法--become-method su
,则默认--become-method
为sudo
。