【发布时间】:2016-08-18 08:52:01
【问题描述】:
在 Ubuntu 14.04 上,我使用禁用密码创建用户,例如:
sudo adduser --disabled-password myuser
我需要对 Ansible user 模块做同样的事情
--禁用密码
缺少 Ansible 文档中的类似选项。有人可以帮助我,我怎样才能使用用户模块获得相同的结果?
【问题讨论】:
-
我怀疑省略
user模块的密码参数是你想要的。
在 Ubuntu 14.04 上,我使用禁用密码创建用户,例如:
sudo adduser --disabled-password myuser
我需要对 Ansible user 模块做同样的事情
--禁用密码
缺少 Ansible 文档中的类似选项。有人可以帮助我,我怎样才能使用用户模块获得相同的结果?
【问题讨论】:
user 模块的密码参数是你想要的。
user 模块使用useradd 命令under the hood.
如果你省略了 user 模块的 password 参数,ansible 会调用 useradd 而没有 -p 标志。
useradd 的手册页状态:
-p, --password 密码
crypt(3) 返回的加密密码。默认是禁用密码。
这正是 OP 所需要的。
adduser --disabled-password test1 和- user: name=test2 state=present 的比较:
# grep test /etc/shadow
test1:*:17031:0:99999:7:::
test2:!:17031:0:99999:7:::
# passwd -S test1
test1 L 08/18/2016 0 99999 7 -1
# passwd -S test2
test2 L 08/18/2016 0 99999 7 -1
正如您在这两种情况下看到的那样,密码都被锁定了。
【讨论】:
test1 和test2 之间存在细微差别。在我的机器上(debian 11): - test2 帐户即使用于 ssh 公钥身份验证也被锁定。 - test1 将能够使用公钥认证通过 ssh 登录
从 Ansible 2.6 开始,user 模块具有选项 password_lock,它将运行 usermod -L (Linux)、pw lock (FreeBSD) 或 usermod -C (?):
usermod -L:
锁定用户的密码。这放了一个“!”在加密密码前,有效禁用密码。
pw lock:
pw 实用程序支持简单的用户密码锁定机制;它通过将字符串
*LOCKED*添加到 master.passwd 中密码字段的开头来防止成功验证。
所以你可以使用:
- name: Create password locked user
user:
name: myuser
state: present
password_lock: yes
【讨论】:
su - username。如果我理解正确,这将创建锁定的用户帐户,我将无法登录或无法登录?
su 登录。