Ansible:使用 Ansible“用户”模块创建的新用户的默认密码是什么

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

我正在运行另一个用户的 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

此处没有为该用户设置密码。 运行剧本后,新用户将在系统中创建。 但是当我尝试使用新创建的用户登录时,它要求输入密码?

基本上,我的目的不是使用新帐户登录,而是了解它如何/为什么要求密码?因为我在创建用户时没有指定密码。

我签入了 /etc/passwd :-

它显示

youtubeadl:x:1003:999::/home/youtubeadl:

youtubeadl
是创建的新用户

ansible
2个回答
8
投票

如果您省略

password
任务的
user
参数,Ansible 将创建处于“锁定”状态的用户,这意味着该用户没有密码。您将无法使用密码登录、使用密码执行 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:::

0
投票

Ansible 的用户模块在幕后使用 useradd,如果未指定密码,默认情况下会禁用密码。您应该能够通过检查用户在

/etc/passwd
中的输入来确认 - 如果密码被禁用,则密码字段应显示
!!

如果您想使用密码直接以该用户身份登录,则需要在

user
模块中指定密码。

或者,您可以使用

authorized_keys
模块添加 SSH 密钥。

当然,只要用户有正确的 shell 设置,那么您应该能够从 root

su
(或使用非 root 用户的 sudo)访问该用户。

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