告別手動操作!用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.pswp.cn/news/894920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894920.shtml
英文地址,請注明出處:http://en.pswp.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…

探索前端框架的未來:Svelte 的崛起

引言 在前端開發的世界里,框架更新換代的速度仿佛光速。從 jQuery 到 Angular,再到如今大熱的 React 和 Vue,開發者們不斷追逐更輕量、更快、更易于維護的框架。如今,Svelte 正悄然崛起,并引發了關于前端框架未來的熱烈…

DeepSeek在FPGA/IC開發中的創新應用與未來潛力

隨著人工智能技術的飛速發展,以DeepSeek為代表的大語言模型(LLM)正在逐步滲透到傳統硬件開發領域。在FPGA(現場可編程門陣列)和IC(集成電路)開發這一技術密集型行業中,DeepSeek憑借其…

數據結構在 Web 開發中的重要性與應用

數據結構是 Web 開發的基石,直接關系到應用程序的效率、可擴展性和可維護性。 根據實際需求選擇合適的數據結構,能夠有效優化性能、簡化代碼,并提升用戶體驗。 本文將深入探討 PHP 和 Laravel 中的常用數據結構,并結合實際案例&am…

20240824 美團 筆試

文章目錄 1、單選題1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、編程題2.12.2崗位:硬件開發工程師(嵌入式系統軟件開發方向) 題型:20 道單選題,2 道編程題題 1、單選題 1.1 C 語言中,如果輸入整數 v 是 2 的冪,下面表達式中哪個會返…

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的語法形式用于對嵌套字段(nestedfields)進行聚合操作。嵌套字段是 Elasticsearch 中的一種特殊字段類型,用于存儲數組中的對象,這些對象需要獨…

【Uniapp-Vue3】創建DB schema數據表結構

右鍵uniCloud文件下的database文件,點擊“新建DB schema”,選擇模板,修改文件名,點擊“創建” 創建完成后會出現對應的文件,進入該文件進行配置 對文件中的必填選項,用戶權限,字段進行配置 其…

解決react中函數式組件usestate異步更新

問題:在點擊modal組件確認后 調用后端接口,使用setstateone(false)使modal組件關閉,但是設置后關閉不了,在設置setstateone(false)前后打印出了對應的stateone都為true,但…

OpenAI 實戰進階教程 - 第六節: OpenAI 與爬蟲集成實現任務自動化

爬蟲與 OpenAI 模型結合,不僅能高效地抓取并分析海量數據,還能通過 NLP 技術生成洞察、摘要,極大提高業務效率。以下是一些實際工作中具有較高價值的應用案例: 1. 電商價格監控與智能分析 應用場景: 電商企業需要監控…

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

文章目錄 前言一、BFS的思路二、BFS的C語言實現1. 圖的表示2. BFS的實現 三、代碼解析四、輸出結果五、總結 前言 廣度優先搜索(BFS)是一種廣泛應用于圖論中的算法,常用于尋找最短路徑、圖的遍歷等問題。與深度優先搜索(DFS&…

解決使用python提取word文檔中所有的圖片時圖片丟失的問題

python解析word文檔,提取文檔中所有的圖片并保存,并將原圖位置用占位符替換。 問題描述 利用python-dox庫解析word文檔,并提取里面的所有圖片時發現會出現一摸一樣的圖片只解析一次,導致圖片丟失,數量不對的情況。 …

Swipe橫滑與SwipeItem自定義橫滑相互影響

背景 vue項目&#xff0c;H5頁面&#xff0c;使用vant的組件庫輪播組件<Swipe>&#xff0c;UI交互要求&#xff0c;在每個SwipeItem中有內容&#xff0c;可自橫滑&#xff0c;查看列表內容 核心代碼 <template><Swipeclass"my_swipe":autoplay&quo…

3. 【.NET Aspire 從入門到實戰】--理論入門與環境搭建--環境搭建

構建現代云原生應用程序時&#xff0c;開發環境的搭建至關重要。NET Aspire 作為一款專為云原生應用設計的開發框架&#xff0c;提供了一整套工具、模板和集成包&#xff0c;旨在簡化分布式系統的構建和管理。開始項目初始化之前&#xff0c;確保開發環境的正確配置是成功的第一…

藍耘智算平臺使用DeepSeek教程

目錄 一.平臺架構與技術特點 二、DeepSeek R1模型介紹與優勢 DeepSeek R1 模型簡介 DeepSeek R1 模型優勢 三.藍耘智算平臺使用DeepSeek教程 展望未來 耘元生代智算云是藍耘科技推出的一款智算云平臺有著以下特點&#xff1a; 一.平臺架構與技術特點 基于 Kubernetes 原…

.net的一些知識點6

1.寫個Lazy<T>的單例模式 public class SingleInstance{private static readonly Lazy<SingleInstance> instance new Lazy<SingleInstance>(() > new SingleInstance());private SingleInstance(){}public static SingleInstance Instace > instance…

1Panel應用推薦:WordPress開源博客軟件和內容管理系統

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款現代化、開源的Linux服務器運維管理面板&#xff0c;它致力于通過開源的方式&#xff0c;幫助用戶簡化建站與運維管理流程。為了方便廣大用戶快捷安裝部署相關軟件應用&#xff0c;1Panel特別開通應用商店&am…

前端開發架構師Prompt指令的最佳實踐

前端開發架構師Prompt 提示詞可作為系統提示詞使用&#xff0c;可基于用戶的需求輸出對應的編碼方案。 本次提示詞偏向前端開發的使用&#xff0c;如有需要可適當修改關鍵詞和示例。 推薦使用 Cursor 中作為自定義指令使用Cline 插件中作為自定義指令使用在力所能及的范圍內使…

Linux在x86環境下制作ARM鏡像包

在x86環境下制作ARM鏡像包&#xff08;如qemu.docker&#xff09;&#xff0c;可以通過QEMU和Docker的結合來實現。以下是詳細的步驟&#xff1a; 安裝QEMU-user-static QEMU-user-static是一個靜態編譯的QEMU二進制文件&#xff0c;用于在非目標架構上運行目標架構的二進制文…

基于STM32設計的倉庫環境監測與預警系統

目錄 項目開發背景設計實現的功能項目硬件模塊組成設計思路系統功能總結使用的模塊的技術詳情介紹總結 1. 項目開發背景 隨著工業化和現代化的進程&#xff0c;尤其是在制造業、食品業、醫藥業等行業&#xff0c;倉庫環境的監控和管理成為了至關重要的一環。尤其是在存儲易腐…

Redis主從同步流程?

目錄 1. 建立連接 2. 全量同步(Full Sync) 3. 部分同步(Partial Sync) 4. 持續同步 5. 心跳檢測 6. 復制偏移量(Replication Offset) 7. 復制積壓緩沖區(Replication Backlog) 總結 Redis 主從同步 是通過復制(replication)實現的,主節點(master)將數據同…