You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible移除系统用户密码?

用Ansible User模块处理供应商默认用户的密码问题

当然可以!用Ansible的user模块就能优雅解决这个需求,完全不用手动编辑/etc/shadow文件——这才是符合Ansible最佳实践的方案,还能自动适配不同操作系统的差异。

核心实现:锁定用户密码

Ansible的user模块支持直接控制用户的密码状态,你只需要将password参数设为'!'或者'*',就能达到和替换shadow文件中密码为!!一样的效果:让用户无法通过密码登录,同时保证操作的幂等性(多次运行不会出问题)。

给你一个现成的Playbook示例:

- name: Lock the vendor-provided default user's password
  ansible.builtin.user:
    name: your_vendor_user  # 替换成实际的供应商用户名
    password: '!'
    update_password: always
    shell: /sbin/nologin  # 可选,确保shell保持不可登录状态,防止被重置

关键参数解释:

  • password: '!':把用户的密码字段设置为!,对应/etc/shadow里的锁定标记,直接阻断密码登录。你也可以用'*',效果完全相同,不同发行版可能偏好其中一种,但Ansible会自动处理兼容问题。
  • update_password: always:强制每次运行Playbook都更新这个设置,避免供应商的配置脚本或其他操作偷偷重置密码。如果只需要在用户创建时初始化设置,可以改用on_create,但这里用户已经存在,always更稳妥。
  • shell: /sbin/nologin:可选参数,用来确保用户的shell始终处于不可登录状态,防止被意外修改回可登录的shell。

为什么这比手动改shadow文件更好?

  • 跨系统兼容:不同Linux发行版的shadow文件路径、权限要求可能有差异,Ansible的user模块会自动适配这些细节,不用你逐个系统调整。
  • 幂等安全:多次运行这个Playbook不会产生任何副作用,而直接用shell模块替换文本可能会重复执行导致异常(比如多次替换后出现多个!!)。
  • 易维护性:用官方模块的配置更清晰,其他团队成员一看就知道你在做什么,比直接操作系统文件更易理解和维护。

如果你想完全清空密码(让shadow里的密码字段为空),可以设置password: '',但这种方式在部分系统上可能允许无密码登录(虽然你已经设置了nologin shell,风险很低),因此更推荐用'!'或'*'来明确锁定密码。

内容的提问来源于stack exchange,提问作者Damien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:36