我正在运行另一个用户的ansible-playbook模板,该模板有一个创建新用户的任务: -
---
- name: Create the application user
user: name={{ gunicorn_user }} state=present
- name: Create the application group
group: name={{ gunicorn_group }} system=yes state=present
- name: Add the application user to the application group
user: name={{ gunicorn_user }} group={{ gunicorn_group }} state=present
此处没有为此用户设置密码。 新用户在运行playbook后在系统中创建。 但是当我尝试使用新创建的用户登录时,它要求输入密码?
基本上,我不打算使用新帐户登录,而是要了解如何/为什么要求输入密码?因为我在创建用户时没有指定密码。
我签了/ etc / passwd: -
显示youtubeadl:x:1003:999::/home/youtubeadl:
youtubeadl
是新用户
答案 0 :(得分:6)
如果省略password
任务的user
参数,Ansible将在"锁定" state,表示用户没有密码。她将无法使用密码登录,使用密码进行sudo命令或更改密码。
但是由于您没有提供另一种登录身份验证方法(例如,带有额外authorized_key
任务的SSH密钥),您仍然会被要求输入密码。
背景资讯:
您可以查看/etc/shadow
(存储密码信息),而不是/etc/passwd
(尽管名称只存储用户帐户信息),您可以查看自己的密码状态。有关这两个文件的历史记录,请参阅https://serverfault.com/a/116511/39608。
该条目可能如下所示:
youtubeadl:!:0:0:99999:7:::
第二个字段中的!
表示密码已被锁定。如果您发出命令
passwd -d youtubeadl
您将密码设置为空,密码状态设置为"已过期"。该条目将如下所示:
youtubeadl::0:0:99999:7:::
答案 1 :(得分:0)
Ansible的用户模块在封面下使用useradd,默认情况下,如果未指定密码,则禁用密码。您应该可以通过查看/etc/passwd
中的用户条目来确认 - 如果密码已停用,则密码字段应显示!!
。
如果您想使用密码直接以该用户身份登录,则需要在user
模块中指定密码。
或者,您可以使用authorized_keys
模块添加SSH密钥。
当然,只要用户拥有一个合适的shell集,那么你应该能够从root用户su
到该用户(或者使用非root用户的sudo)。