告别手动操作!用 Ansible user 模块高效管理 Linux 账户
在企业运维环境中,服务器的用户管理是一项基础但非常重要的任务。比如,当有新员工加入时,我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时,我们也需要迅速禁用或删除他们的账户,以避免潜在的安全风险。
如果采用手动方式来完成这些任务,就需要在每台服务器上逐一执行一系列命令,比如 useradd、passwd 和 chage 等,这不仅耗时费力,还容易出现错误。幸运的是,Ansible提供了一个非常方便的 user 模块,可以帮助我们高效地进行批量用户管理,从而确保操作的安全性和一致性。
user模块的核心功能
要了解user模块的详细用法,我们可以使用ansible-doc命令。只需运行以下命令即可查看相关信息:
成功执行上述命令后,会展示如下图的结果:
user模块提供了许多实用的功能,主要包括以下几点:
创建或删除用户设置密码指定用户的UID、GID指定用户所属组创建home目录设定 Shell设定SSH公钥认证常用参数说明:
参数
作用
name
指定用户名
state
present(创建用户)或 absent(删除用户)
password
用户密码(需加密)
uid
指定用户UID
group
指定用户所属组
groups
指定用户附加的组
home
指定 home目录路径
shell
指定默认Shell,如 /bin/bash
create_home
是否创建 home目录(默认yes)
remove
absent时是否删除 home目录
expires
指定密码过期时间(时间戳格式)
实战案例分析
案例 1:批量创建开发团队账户需求:为3名新入职开发人员创建账户,要求:
创建主目录/home/dev_username加入docker、git附加组禁止SSH密码登录设置初始密码关键点说明:
使用loop实现批量创建password参数使用python中crypt生成的哈希密文自动生成4096位RSA密钥对保持默认主组,同时附加到docker和git组通过执行如下命令,即可批量创建用户:
创建成功后可以看到如下图的结果:
创建opsadmin账户并授予免密sudo权限
validate: visudo -cf %s:
在修改前使用 visudo -cf /etc/sudoers 进行语法检查。防止 sudoers 文件写错,避免系统无法使用sudo。成功执行上述命令后,您将会看到如下图所示的结果:
需求:安全移除已离职员工账户,删除用户但保留主目录。
成功执行下面的命令后,会把定义的用户删除,但是会保留删除用户的家目录,如下图所示:
需求:禁用 charlie账户,但不删除,确保其 home 目录仍然保留。
成功执行如下命令会输入如下图的结果:
总结
Ansible的user模块为 Linux 服务器的用户管理提供了强大的自动化能力,可以大幅提升运维效率并减少人为失误。本文通过典型场景展示了以下关键功能:
创建批量用户并分配权限为运维账号配置Sudo权限禁用用户删除用户并保留 home目录通过这些案例,相信你已经掌握了 user 模块的基本用法,并能在实际工作中灵活应用。希望这篇教程能帮助你更轻松地管理服务器用户,提高运维自动化能力!