gpt4 book ai didi

即使配置为无密码,Ansible become_user 仍要求输入密码

转载 作者:行者123 更新时间:2023-12-02 02:47:55 24 4
gpt4 key购买 nike

我有一个奇怪的问题,经过多次搜索后,我找不到答案。这是一个非常简单的案例。

目前有一台linux机器,用户x和用户y。当我手动登录到用户 x 时,我可以使用以下命令无密码地切换用户 y:“sudo su - y”。

现在回到ansible。

tasks:
- name: test task
shell: echo "this is a test"
become: true
become_user: y

此任务将使用用户 x 连接到计算机。要运行 echo,它会变成 y。对于这种情况,我得到: "module_stdout": "sudo: 需要密码\r\n",

我为用户 y 提供了一个带有/bin/sh * 的 sudoers 文件,但也不起作用。有人有想法吗?

提前致谢。

最佳答案

要使用 sudo su -,您可能需要像这样添加 become_flags:

tasks:
- name: test task
shell: echo "this is a test"
become: true
become_method: "sudo"
become_flags: "su -"
become_user: y

如果这不起作用,请尝试其他方法:

tasks:
- name: test task
shell: echo "this is a test"
become: true
become_method: "sudo"
become_flags: "su - -c"
become_user: y

通过将 -c 标志添加到 su,您可能能够解决 Ansible 如何运行 become 命令的问题。实际上,Ansible 并没有执行两个步骤(sudo su - y,然后运行命令),而是以 sudo ... foobarbaz.py 的形式运行一个命令>,其中 foobarbaz.py 是包含您的 shell 步骤的脚本(在本例中为 echo 命令)。

要使其正常工作,您必须确保您的 sudoers 文件包含一个条目,允许您的用户运行类似这样的操作(如果您查看 sudo -l< 的输出):

su - -c *

关于即使配置为无密码,Ansible become_user 仍要求输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53541277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com