ansible - 如何在ansible中成为具有未知密码的非特权用户
问题描述
我想确保创建了一个 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 und 而不是 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用户?
编辑:到目前为止我已经尝试过:
我尝试使用 become: yes 全局以及本地,可能是任何组合 auf become_method: su | sudo 以及在配置中启用流水线和 allow_world_readable_tmpfiles。
错误是
- 使用 become: yes 和 become_method: su 的任意组合时出现“错误的 su 密码”
- 使用 become: yes 和 become_method: sudu 的任意组合时,“sshUser 不在 sudoers 文件中”
- “用户 postgres 的对等身份验证失败”时不使用成为:是的。
最后一个是 postgresql 错误,所以我不确定它是否离我想要的位置更近了一步,因为它似乎使用了正确的用户。sudo -u postgres psql 不过确实可以工作,所以我不知道为什么如果用户 postgres 正确登录,它会出现身份验证问题。
我使用的是 Ansible 2.5.1,我要安装 postgresql 的主机是 debian buster。
解决方案
正如 larsks 所提到的,不可能链接用户更改。这记录在:https ://docs.ansible.com/ansible/2.4/become.html#becoming-an-unprivileged-user
方法不能被链接。您不能使用 sudo /bin/su - 要成为用户,您需要具有在 sudo 中以该用户身份运行命令或能够直接 su 到它的权限
我仍在寻找解决方法,但现在我会将 sshUser 添加到 sudoers。
推荐阅读
- sql-server - 连接到 SQL Server 存储库的 PDI 7 o 8 错误
- python - 在 ndarray 中减少一维
- pandas - 无法解析服务’
- blockchain - 如何在局域网上创建一个以其他计算机为节点或参与者的区块链网络?
- python - python,pexpect:sendline() 在发送文本时添加了意外的空格
- regex - Sed Regex 删除除序数外的所有数字
- c# - 没有子查询的 Dapper 中的复杂映射
- reactjs - 正确使用 React getDerivedStateFromProps
- css - 从另一个文件引用 base64 字符串
- navision - 传递给报告的变量值未打印