在Ubuntu 14.04我创建用户禁用密码如下:sudo adduser--禁用口令的myuser我需要对Ansible user模块执行相同操作
2fjabf4q1#
user模块在后台使用useradd命令。如果省略user模块的password参数,则ansible调用useradd时不使用-p标志。useradd的手册页指出:-p,--密码密码crypt(3)返回的加密密码。默认值是禁用密码。这正是OP所需要的。adduser --disabled-password test1和- user: name=test2 state=present的比较:
useradd
user
password
-p
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
如您所见,在这两种情况下,密码都是锁定的。
tf7tbtn22#
从Ansible 2.6开始,user模块有了password_lock选项,它可以运行usermod -L(Linux)、pw lock(FreeBSD)或usermod -C(?):usermod -L:锁定用户的密码。这会在加密的密码前加上一个"!",从而有效地禁用密码。pw lock:pw实用程序为用户支持简单的密码锁定机制;它通过将字符串*LOCKED*预先添加到master.passwd中的密码字段的开头来防止成功认证。因此,您可以使用:
password_lock
usermod -L
pw lock
usermod -C
*LOCKED*
- name: Create password locked user user: name: myuser state: present password_lock: yes
nzkunb0c3#
这对我来说有点不同,我想成为su username的用户,但是在尝试the accepted answer之后,我仍然被提示输入一个从未设置过的密码。尝试的步骤:
su username
shell: /sbin/nologin
我的解决方案是在Ansible剧本中添加一个shell步骤,禁用用户密码,但保留对shell的访问。现在帐户状态是NP(无密码),而不是L(锁定)。我可以使用su命令登录,而不会提示输入密码。
NP
L
su
--- - hosts: todo become_user: root become: yes gather_facts: no tasks: - name: Create app group ansible.builtin.group: name: "{{ gh_repo }}" state: present system: true - name: Create app user ansible.builtin.user: name: "{{ username }}" home: /home/{{ username }}/ state: present system: true group: "{{ username }}" - name: Disable user password shell: | passwd -d {{ gh_repo }}
您可以使用sudo passwd --status username查看您的帐户状态。
sudo passwd --status username
3条答案
按热度按时间2fjabf4q1#
user模块在后台使用
useradd
命令。如果省略
user
模块的password
参数,则ansible调用useradd
时不使用-p
标志。useradd的手册页指出:
-p,--密码密码
crypt(3)返回的加密密码。默认值是禁用密码。
这正是OP所需要的。
adduser --disabled-password test1
和- user: name=test2 state=present
的比较:如您所见,在这两种情况下,密码都是锁定的。
tf7tbtn22#
从Ansible 2.6开始,
user
模块有了password_lock
选项,它可以运行usermod -L
(Linux)、pw lock
(FreeBSD)或usermod -C
(?):usermod -L
:锁定用户的密码。这会在加密的密码前加上一个"!",从而有效地禁用密码。
pw lock
:pw实用程序为用户支持简单的密码锁定机制;它通过将字符串
*LOCKED*
预先添加到master.passwd中的密码字段的开头来防止成功认证。因此,您可以使用:
nzkunb0c3#
这对我来说有点不同,我想成为
su username
的用户,但是在尝试the accepted answer之后,我仍然被提示输入一个从未设置过的密码。尝试的步骤:
shell: /sbin/nologin
我的解决方案是在Ansible剧本中添加一个shell步骤,禁用用户密码,但保留对shell的访问。现在帐户状态是
NP
(无密码),而不是L
(锁定)。我可以使用su
命令登录,而不会提示输入密码。您可以使用
sudo passwd --status username
查看您的帐户状态。