ansible:如何成为无密码用户

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

我正在尝试使用ansible实现以下目标

  1. 创建一个没有密码的用户
adduser test <-- ok and works on linux machine and works with ansible
  1. 更改为用户测试

苏测试<-- works on linux machine, but fails with ansible. I get incorrect password message

  1. 以测试用户身份将文件从位置 1 复制到位置 2 并更改文件内容。

cp loc1/testfile.txt loc2/testfile.txt && echo "你好" > testfile.txt

---
- name: This is a hello-world example
  hosts: all
  tasks:
    - name: create a passwordless test user
      action: user name=test state=present
      become: yes
      become_user: root

    - name: Create a file called '/tmp/testfile.txt' with the content 'hello' using test user.
      copy:
        content: hello
        dest: /tmp/testfile.txt
        owner: test
        group: test
      become_user: test

主要条件:

在执行时,文件

testfile.txt
已在Linux计算机上创建,并具有组root和用户root。我想覆盖该文件并分配不同的用户和组。

我尝试过各种组合,包括

      copy:
        content: hello
        dest: /tmp/testfile.txt
        owner: test
        group: test
      become: yes
      become_user: test
      copy:
        content: hello
        dest: /tmp/testfile.txt
        owner: test
        group: test
      become: yes
      become_user: test
      become_method: su
      copy:
        content: hello
        dest: /tmp/testfile.txt
        owner: test
        group: test
      become: yes
      copy:
        content: hello
        dest: /tmp/testfile.txt
        owner: test
        group: test
      become_user: test
      become_method: su

总是收到有关密码不正确的消息。尴尬的时刻是测试用户没有密码

我做错了什么?

更新:

尝试过这个

如何实现 sudo su - 并在 ansible 中运行所有命令 <-- does not work

找到答案 - 这是不可能的

https://devops.stackexchange.com/questions/3588/how-do-you-simulate-sudo-su-user-in-ansible

重点是什么?

引自 Quora(来源:https://www.quora.com/What-is-advantage-of-creating-passwordless-user-in-Linux

我认为您指的是诸如网络服务器之类的进程,作为 具有锁定密码的“apache”用户(“!!”的影子条目)。

这是为了安全,以防万一发现漏洞 服务器代码。 2000年左右之前,服务器很常见 以 root 用户身份运行,特别是因为需要此权限 在特权端口(1024 以下)上打开网络套接字,例如 53 (DNS) 或 80 (HTTP)。我记得,高调违反约束和 sendmail 服务器导致开发人员重新考虑这一策略。自从 然后,服务以 root 权限启动,套接字打开,并且 然后特权被删除给非特权用户 ID,例如“apache” 或“命名”。这不需要密码,因为从来没有打算这样做 任何人登录。相反,以 root 身份运行的进程会执行 setuid() 系统调用以更改该用户的有效用户 ID。如果发生 安全漏洞,攻击者将被限制在访问列表中 该用户;例如,网络服务器上的易受攻击的 CGI 脚本会 能够以“apache”用户身份访问 /tmp 目录,但是 例如,无法读取 /etc/shadow,或写入额外的用户 进入 /etc/passwd 或修改 /sbin 中的系统二进制文件。

ansible
1个回答
0
投票

2021:为了避免“使用 Ansible 的

sudo
用户不接受密码”中描述的情况:

fatal: [testserver]: FAILED! => {"failed": true, "msg": "Incorrect su password"}

您可以尝试使用

sudo
,假设您拥有 给予
test
用户
sudo
权限
:

# Debian systems (Ubuntu / Linux Mint / ElementryOS), add users to the sudo group
sudo usermod -aG sudo username

# On RHEL based systems (Fedora / CentOS), add users to the wheel group
sudo usermod -aG wheel username

然后:

become_user: test
become_method: sudo

推出:

ansible-playbook -i inventory simple_playbook.yml --ask-become-pass

并输入

root
密码。


2024:Zbyl在“Ansible

become_user
要求输入密码,即使配置为无密码”中建议使用
pipe_to_su
脚本
,它允许您的远程/登录用户通过管道命令以另一个用户的身份执行命令须藤
su - <user>

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