如何在ansible中成为具有未知密码的非特权用户

问题描述 投票:0回答:2

我想确保创建一个postgresql数据库。

为此,我有一个postgresql角色的剧本。通过ssh登录服务器使用非特权用户,让他们命名为sshUser。每当我想以特权用户身份运行命令时,我都会使用become_user:root。在配置中,我为root用户启用了become_ask_pass。

- name: Add the user 'postgres'
  user:
    name: postgres
    state: present
  become_user: root
[privilege_escalation]
become_user=root
become_ask_pass=True

现在我想以用户postgres的形式检查数据库。在非安全的条款中,我想成为root而不是sudo -u postgres psql,因为我有root密码而不是postgres密码。如果我不是root,那么尝试这个时我会得到“sshUser不在sudoers文件中”:

- name: Ensure database is created
  postgresql_db: 
    name: "{{ db_name }}"
    encoding: UTF-8
    state: present
  become_user: postgres

有没有办法成为root用户?

编辑:到目前为止我尝试过的:

我尝试使用成为:全局以及本地,可能是任何组合auf become_method:su | sudo以及在配置中启用pipelining和allow_world_readable_tmpfiles。

错误也是

  • 使用“yes和yes_method:su”的任意组合时,“错误的su密码”
  • “sshUser不在sudoers文件中”使用的任何组合成为:yes和become_method:sudu
  • “用户postgres的对等身份验证失败”,不使用时成为:是的。

最后一个是postgresql错误,所以我不确定它是否更接近我想要的位置,因为它似乎使用了正确的用户。 sudo -u postgres psql definetly虽然工作,所以我不知道为什么如果用户postgres正确登录它应该有问题验证。

我正在使用Ansible 2.5.1,我想安装postgresql的主机是debian buster。

ansible
2个回答
0
投票

正如larsks所说,不可能链接用户更改。记录在:https://docs.ansible.com/ansible/2.4/become.html#becoming-an-unprivileged-user

方法无法链接。您不能使用sudo / bin / su - 成为用户,您需要具有在sudo中以该用户身份运行命令的权限,或者能够直接向其发送su

我仍然在寻找一种解决方法,但是现在我将sshUser添加到sudoers中。


-1
投票

就在这里。

https://docs.ansible.com/ansible/latest/user_guide/become.html

启用模式的密码

如果需要密码才能进入启用模式,可以通过以下两种方式之一指定:

提供--ask-become-pass命令行选项设置ansible_become_pass连接变量

© www.soinside.com 2019 - 2024. All rights reserved.