我正在尝试使用ansible实现以下目标
adduser test <-- ok and works on linux machine and works with ansible
苏测试<-- works on linux machine, but fails with ansible. I get incorrect password message
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 -
找到答案 - 这是不可能的
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 中的系统二进制文件。
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
密码。
become_user
要求输入密码,即使配置为无密码”中建议使用pipe_to_su
脚本,它允许您的远程/登录用户通过管道命令以另一个用户的身份执行命令须藤su - <user>
。