告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中,服务器的用户管理是一项基础但非常重要的任务。比如,当有新员工加入时,我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时,我们也需要迅速禁用或删除他们的账户,以避免潜在的安全风险。

如果采用手动方式来完成这些任务,就需要在每台服务器上逐一执行一系列命令,比如 useraddpasswdchage 等,这不仅耗时费力,还容易出现错误。幸运的是,Ansible提供了一个非常方便的 user 模块,可以帮助我们高效地进行批量用户管理,从而确保操作的安全性和一致性。

user模块的核心功能

要了解user模块的详细用法,我们可以使用ansible-doc命令。只需运行以下命令即可查看相关信息:

ansible-doc -s user

成功执行上述命令后,会展示如下图的结果:

user模块提供了许多实用的功能,主要包括以下几点:

  • 创建或删除用户

  • 设置密码

  • 指定用户的UIDGID

  • 指定用户所属组

  • 创建home目录

  • 设定 Shell

  • 设定SSH公钥认证

常用参数说明:

参数作用
name指定用户名
statepresent(创建用户)或 absent(删除用户)
password用户密码(需加密)
uid指定用户UID
group指定用户所属组
groups指定用户附加的组
home指定 home目录路径
shell指定默认Shell,如 /bin/bash
create_home是否创建 home目录(默认yes
removeabsent时是否删除 home目录
expires指定密码过期时间(时间戳格式)

⚓实战案例分析

📝案例 1:批量创建开发团队账户

需求:为3名新入职开发人员创建账户,要求:

  • 创建主目录/home/dev_username

  • 加入dockergit附加组

  • 禁止SSH密码登录

  • 设置初始密码

- name: Create developer accountshosts: dev_serversbecome: yesvars:developers:- { name: 'alice', uid: 2001 }- { name: 'bob',   uid: 2002 }- { name: 'charlie', uid: 2003 }tasks:- name: Create developer usersansible.builtin.user:name: "{{ item.name }}"uid: "{{ item.uid }}"groups: docker,gitappend: yesshell: /bin/bashpassword: "$6$rounds=656000$SAlt1234$XH6X8L8Dz4tdj.7WZ2TvWUDO2w/lk5sABC1234ABCDefgHIJKLmnopqrSTUVWXYZ"generate_ssh_key: yesssh_key_bits: 4096create_home: yesloop: "{{ developers }}"

关键点说明:

  1. 使用loop实现批量创建

  2. password参数使用pythoncrypt生成的哈希密文

  3. 自动生成4096RSA密钥对

  4. 保持默认主组,同时附加到dockergit

通过执行如下命令,即可批量创建用户:

ansible-playbook Create_developer_accounts.yml

创建成功后可以看到如下图的结果:

📝案例 2:为运维账户配置Sudo权限

创建opsadmin账户并授予免密sudo权限

- name: Configure ops adminhosts: dev_serversbecome: yestasks:- name: Create ops useransible.builtin.user:name: opsadmingroups: wheelshell: /bin/bashcomment: "Operations Administrator"- name: Configure passwordless sudoansible.builtin.lineinfile:path: /etc/sudoersline: 'opsadmin ALL=(ALL) NOPASSWD:ALL'validate: 'visudo -cf %s'

validate: 'visudo -cf %s'

  • 在修改前使用 visudo -cf /etc/sudoers 进行语法检查。

  • 防止 sudoers 文件写错,避免系统无法使用sudo

 ansible-playbook  Configure_ops_admin.yml

成功执行上述命令后,您将会看到如下图所示的结果:

📝案例3:安全删除离职用户

需求:安全移除已离职员工账户,删除用户但保留主目录。

- name: Remove deprecated usershosts: dev_serversbecome: yesvars:departed_users: ['alice', 'bob']tasks:- name: Remove user accountsansible.builtin.user:name: "{{ item }}"state: absentremove: no  # 不删除主目录loop: "{{ departed_users }}"

成功执行下面的命令后,会把定义的用户删除,但是会保留删除用户的家目录,如下图所示:

ansible-playbook  Remove_deprecated_users.yml

📝案例 4:禁用用户

需求:禁用 charlie账户,但不删除,确保其 home 目录仍然保留。

- name: 禁用用户hosts: dev_serversbecome: yestasks:- name: 锁定 charlie 账户ansible.builtin.user:name: charliepassword_lock: yes

成功执行如下命令会输入如下图的结果:

ansible-playbook lock_charlie.yml

总结

Ansibleuser模块为 Linux 服务器的用户管理提供了强大的自动化能力,可以大幅提升运维效率并减少人为失误。本文通过典型场景展示了以下关键功能:

  • 创建批量用户并分配权限

  • 为运维账号配置Sudo权限

  • 禁用用户

  • 删除用户并保留 home目录

通过这些案例,相信你已经掌握了 user 模块的基本用法,并能在实际工作中灵活应用。希望这篇教程能帮助你更轻松地管理服务器用户,提高运维自动化能力! 🚀

推荐阅读


  • 登录即见:打造服务器欢迎信息,提升用户体验
  • 自动化压缩新姿势!教你用Ansible Archive模块高效管理文件
  • 提升运维效率:Ansible systemd 模块操作技巧,让你告别繁琐命令行!
  • Ansible fetch模块详解:轻松从远程主机抓取文件
  • 告别手动编辑:如何用Python快速创建Ansible hosts文件?
  • 一分钟学会Ansible cron模块,高效管理你的定时任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ADC模数转换器概念函数及应用

ADC模数转换器概念函数及应用 文章目录 ADC模数转换器概念函数及应用1.ADC简介2.逐次逼近型ADC2.1逐次逼近型ADC2.2stm32逐次逼近型2.3ADC基本结构2.4十六个通道 3.规则组的4种转换模式3.1单次转换,非扫描模式3.2连续转换,非扫描模式3.3单次转换&#xf…

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展,以DeepSeek为代表的大语言模型(LLM)正在逐步渗透到传统硬件开发领域。在FPGA(现场可编程门阵列)和IC(集成电路)开发这一技术密集型行业中,DeepSeek凭借其…

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的语法形式用于对嵌套字段(nestedfields)进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型,用于存储数组中的对象,这些对象需要独…

【Uniapp-Vue3】创建DB schema数据表结构

右键uniCloud文件下的database文件,点击“新建DB schema”,选择模板,修改文件名,点击“创建” 创建完成后会出现对应的文件,进入该文件进行配置 对文件中的必填选项,用户权限,字段进行配置 其…

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索(BFS)是一种广泛应用于图论中的算法,常用于寻找最短路径、图的遍历等问题。与深度优先搜索(DFS&…

蓝耘智算平台使用DeepSeek教程

目录 一.平台架构与技术特点 二、DeepSeek R1模型介绍与优势 DeepSeek R1 模型简介 DeepSeek R1 模型优势 三.蓝耘智算平台使用DeepSeek教程 展望未来 耘元生代智算云是蓝耘科技推出的一款智算云平台有着以下特点: 一.平台架构与技术特点 基于 Kubernetes 原…

1Panel应用推荐:WordPress开源博客软件和内容管理系统

1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…

基于STM32设计的仓库环境监测与预警系统

目录 项目开发背景设计实现的功能项目硬件模块组成设计思路系统功能总结使用的模块的技术详情介绍总结 1. 项目开发背景 随着工业化和现代化的进程,尤其是在制造业、食品业、医药业等行业,仓库环境的监控和管理成为了至关重要的一环。尤其是在存储易腐…

PbootCMS 修改跳转提示,修改笑脸时间

在使用时,每次都提示这个: 修改方法: 修改跳转时间:找到 handle.php 文件编辑 ,调整 setTimeout 函数的时间参数。 修改提示文字:编辑 handle.php 文件,修改提示文字的内容。 隐藏提示页面&am…

Elasticsearch:向量搜索的快速介绍

作者:来自 Elastic Valentin Crettaz 本文是三篇系列文章中的第一篇,将深入探讨向量搜索(也称为语义搜索)的复杂性,以及它在 Elasticsearch 中的实现方式。 本文是三篇系列文章中的第一篇,将深入探讨向量搜…

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻,以帮助提高球员的安全。两种接触,一种是人与人的,另一种是人与地面,不包括脚底和地面的,跟我之前做的这…

Sentinel的安装和做限流的使用

一、安装 Release v1.8.3 alibaba/Sentinel GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 alibaba/Sentinelhttps://github.com/alibaba/Senti…

“AI隐患识别系统,安全多了道“智能护盾”

家人们,在生活和工作里,咱们都知道安全那可是头等大事。不管是走在马路上,还是在工厂车间忙碌,又或是住在高楼大厦里,身边都可能藏着一些安全隐患。以前,发现这些隐患大多靠咱们的眼睛和经验,可…

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek ,点击API开放平台。 在开放平台界面左侧点击API keys,进入API keys管理界面,点击创建API key按钮创建API key,名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…

SolidWorks教程P2.2【草图 | 第二节】——草图几何关系与编辑

草图几何关系包括:重合、中点、相切、平行、相等、共线、对称 草图编辑功能包括:裁剪实体、转换实体引用、等距实体 目录 1.草图几何关系 2.裁剪实体 3.转换实体引用 4.等距实体 补充知识:智能尺寸 1.草图几何关系 在之前的草图介绍里…

WARNING(ORCAP-1589): Net has two or more aliases - possible short?

参考链接:ORCAD报错ORCAP-1589-CSDN博客 现象: Capture CIS 使用PCB-DRC检查原理图,报错Net has two or more aliases - possible short? 错误原因: 一个网络有两个网络名称。 问题本质: 原理图管脚型号的设定问题…

nvm:node 版本管理器

一、先安装git Git 安装完成后执行 git --version查看版本号是否安装成功 二、安装nvm (参考链接:mac 安装nvm详细教程 - 简书) 官网(https://github.com/nvm-sh/nvm/blob/master/README.md)查看最新版本安装命令 …

动态规划——路径问题①

文章目录 62. 不同路径算法原理代码实现 63. 不同路径 II算法原理代码实现 LCR 166. 珠宝的最高价值算法原理代码实现 62. 不同路径 题目链接:62. 不同路径 算法原理 状态表示: dp[i,j]:以[i, j]位置为结尾,走到[i, j]位置有多少…

汽车智能座舱的技术演进与用户体验重构 —— 基于多模态交互与 AI 融合的范式创新

摘要: 汽车智能座舱作为人 - 车 - 环境交互的核心载体,正经历从功能驱动到体验驱动的范式变革。本文通过技术解构与用户行为分析,深入揭示智能座舱在异构计算、多模态感知、服务生态等维度的创新路径。研究表明,智能座舱的竞争焦…

SpringBoot3整合Swagger3时出现Type javax.servlet.http.HttpServletRequest not present错误

目录 错误详情 错误原因 解决方法 引入依赖 修改配置信息 创建文件 访问 错误详情 错误原因 SpringBoot3和Swagger3版本不匹配 解决方法 使用springdoc替代springfox&#xff0c;具体步骤如下&#xff1a; 引入依赖 在pom.xml文件中添加如下依赖&#xff1a; <…