ubuntu Ansible使用选项--disabled-password创建用户

qlzsbp2j  于 2023-03-07  发布在  其他
关注(0)|答案(3)|浏览(190)

在Ubuntu 14.04我创建用户禁用密码如下:
sudo adduser--禁用口令的myuser
我需要对Ansible user模块执行相同操作

  • -禁用密码
    Ansible文档中的类似选项丢失。有人能帮我吗,我怎么能用用户模块得到相同的结果?
2fjabf4q

2fjabf4q1#

user模块在后台使用useradd命令。
如果省略user模块的password参数,则ansible调用useradd时不使用-p标志。
useradd的手册页指出:
-p,--密码密码
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

如您所见,在这两种情况下,密码都是锁定的。

tf7tbtn2

tf7tbtn22#

从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
nzkunb0c

nzkunb0c3#

这对我来说有点不同,我想成为su username的用户,但是在尝试the accepted answer之后,我仍然被提示输入一个从未设置过的密码。
尝试的步骤:

  • 忘记密码
  • 在“创建应用程序用户”任务中设置shell: /sbin/nologin

我的解决方案是在Ansible剧本中添加一个shell步骤,禁用用户密码,但保留对shell的访问。现在帐户状态是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查看您的帐户状态。

相关问题