一键掌控系统用户与权限:超实用Bash 用户组管理工具脚本

一键掌控系统用户与权限:超实用Bash 用户组管理工具脚本一 脚本概览在日常 Linux 系统管理中 用户与用户组的增删改查 权限管理是一项频繁但繁琐的任务 你是否厌倦了反复敲命令行 是否曾误删用户或忘记某个组的成员

大家好,欢迎来到IT知识分享网。

一键掌控系统用户与权限:超实用Bash 用户组管理工具脚本

一、脚本概览

在日常Linux 系统管理中,用户与用户组的增删改查、权限管理是一项频繁但繁琐的任务。你是否厌倦了反复敲命令行?是否曾误删用户或忘记某个组的成员?如果你也遇到过这些问题,这份脚本堪称 Linux 用户与组管理的百宝箱,它将众多分散的管理命令整合于一体

二、核心功能深度剖析

(一)用户管理

  • 添加用户 :脚本会首先检查用户名是否已存在。若不存在,则自动调用 useradd 命令创建用户,并随即为其设置密码。这一过程一气呵成,避免了手动创建用户时可能出现的疏漏,例如忘记配置密码或用户信息设置不规范等问题。
  • 删除用户 :当您需要清理系统中的冗余用户时,只需输入用户名,脚本会在确认用户存在后,利用 userdel -r 命令将其彻底删除,包括用户主目录及相关文件,确保系统资源得到及时释放,维持系统环境的整洁有序。
  • 锁定与解锁用户 :在某些特殊场景下,如怀疑用户账户被盗用或需要临时限制用户登录,通过 passwd -l 命令锁定用户,可迅速禁止该用户登录系统。而当需要恢复用户正常使用时,passwd -u 命令又能轻松解锁,操作便捷且响应迅速,为系统安全保驾护航。

(二)组管理

  • 创建新组并添加用户 :您可以根据实际需求创建新的用户组,脚本借助 groupadd 命令完成组的创建,并在创建成功后,立即将指定用户添加至该组。这一步骤对于划分不同部门、项目团队的资源访问权限极为关键,能够有条不紊地构建起系统中的组织架构。
  • 将用户加入已有组 :当需要调整用户所属组,以使其获得特定组的资源访问权限时,脚本利用 usermod -aG 命令将用户精准地添加到目标组中。这一操作充分考虑了多组管理的复杂性,避免了因操作不当导致用户原有组关系被破坏的问题。
  • 删除组 :对于不再使用的组,脚本在确认组存在后,使用 groupdel 命令将其删除,从源头上整理系统中的组资源,防止组信息的无序膨胀,维持系统管理的清晰度。

(三)权限管理

  • 修改密码 :脚本支持对任意用户密码的修改,只需输入目标用户名,即可进入密码修改流程。这一功能不仅适用于用户初次设置密码,也方便管理员在密码泄露或定期更换密码策略下,快速为用户更新密码,保障账户安全。
  • 添加 sudo 权限 :通过检测 sudo 组是否存在,若存在则将用户添加至该组,赋予其 sudo 权限。这一操作遵循系统权限管理的规范,确保用户获得适当权限的同时,不会破坏系统的权限体系,使特权操作既安全又可控。

(四)信息查询

  • 查看用户所属组 :当您需要了解某个用户在系统中的组归属情况时,输入用户名,脚本会调用 groups 命令清晰地列出该用户所属的所有组,方便您快速掌握用户权限范围,为权限调整提供依据。
  • 查看组成员 :对于指定的组,脚本利用 getent group 命令获取该组的所有成员信息,让您一目了然地知晓组内人员构成,便于进行组内资源分配的优化以及成员管理。

三、脚本的日志记录功能

脚本贴心地设置了日志记录功能,将每一次的操作细节,包括操作类型、涉及的用户或组名称等关键信息,完整地记录到位于 /var/log/ 目录下的 user_group_tool.log 文件中。这就好比为您的系统管理操作留了一部详尽的 “操作备忘录”,在后续出现用户或组相关问题需要追溯原因时,日志文件将成为您排查问题、定位故障的有力助手。例如,当某个用户反馈无法访问特定资源,您可以通过查看日志,快速了解该用户所属组是否发生过变更、是否有过权限调整等操作,从而有的放矢地解决问题。

四、适用场景与价值凸显

  • 企业服务器管理 :在企业级 Linux 服务器环境中,随着员工的流动以及业务的拓展,频繁的用户与组变更操作在所难免。这份脚本能够帮助系统管理员高效地应对大量用户账户与组的创建、删除、权限调整等工作,确保员工能够及时获得相应的资源访问权限,同时保障系统数据的安全与隔离,助力企业业务的稳定运行。
  • 开发团队协作 :对于开发团队来说,在共享的开发环境中,不同的开发人员需要根据项目需求被划分到不同的组,以便访问特定的代码仓库、测试环境等资源。脚本的便捷操作可以让开发团队负责人快速为新成员分配合适的权限,或者在项目结束后及时收回权限,促进团队协作的高效性与灵活性,提高开发效率。
  • 个人服务器运维 :即使是个人搭建的 Linux 服务器,用于学习、实验或者托管个人项目,随着项目的增多以及与其他用户分享资源的需求出现,这份脚本也能助您轻松打理服务器上的用户与组事务,使您的服务器管理更加规范有序,避免因权限混乱导致的安全隐患或资源访问问题。

这个脚本将系统用户管理变得前所未有的轻松、可靠和可追踪。如果你是

一名Linux 管理员、DevOps 工程师,或只是希望提升系统管理效率的用户,不妨一试!

使用方式

  1. 将脚本保存为
user_group_tool.sh
  1. 赋予可执行权限:
chmod +x user_group_tool.sh

3.运行脚本:

sudo ./user_group_tool.sh

完整配置脚本:

#!/bin/bash LOG_FILE="/var/log/user_group_tool.log" function log_action() { echo "$(date '+%Y-%m-%d %H:%M:%S') | $1" >> "$LOG_FILE" } function menu() { clear echo "=============================" echo " 系统用户与组管理工具" echo "=============================" echo "1. 添加用户" echo "2. 删除用户" echo "3. 锁定用户" echo "4. 解锁用户" echo "5. 修改密码" echo "6. 添加 sudo 权限" echo "7. 创建新组并添加用户" echo "8. 将用户加入已有组" echo "9. 删除组" echo "10. 查看用户所属组" echo "11. 查看组成员" echo "12. 退出" echo "=============================" } function add_user() { read -p "请输入要添加的用户名: " username if id "$username" &>/dev/null; then echo "用户 $username 已存在" log_action "尝试添加已存在的用户: $username" else useradd "$username" && echo "添加成功" passwd "$username" log_action "添加用户: $username" fi } function del_user() { read -p "请输入要删除的用户名: " username if id "$username" &>/dev/null; then userdel -r "$username" && echo "删除成功" log_action "删除用户: $username" else echo "用户 $username 不存在" log_action "尝试删除不存在的用户: $username" fi } function lock_user() { read -p "请输入要锁定的用户名: " username passwd -l "$username" && echo "用户已锁定" log_action "锁定用户: $username" } function unlock_user() { read -p "请输入要解锁的用户名: " username passwd -u "$username" && echo "用户已解锁" log_action "解锁用户: $username" } function change_pass() { read -p "请输入要修改密码的用户名: " username passwd "$username" log_action "修改密码: $username" } function add_sudo() { read -p "请输入要授予 sudo 权限的用户名: " username if id "$username" &>/dev/null; then if getent group sudo &>/dev/null; then usermod -aG sudo "$username" && echo "$username 已加入 sudo 组" log_action "添加 sudo 权限: $username" else echo "sudo 组不存在,请先创建或检查系统配置" log_action "失败:sudo 组不存在,无法添加 $username" fi else echo "用户 $username 不存在" log_action "失败:用户 $username 不存在,无法授予 sudo 权限" fi } function create_group_add_user() { read -p "请输入要创建的组名: " groupname groupadd "$groupname" && echo "组 $groupname 创建成功" log_action "创建组: $groupname" read -p "请输入要添加到该组的用户名: " username usermod -aG "$groupname" "$username" && echo "$username 已加入组 $groupname" log_action "添加用户 $username 到组 $groupname" } function join_group() { read -p "请输入要添加到组的用户名: " username read -p "请输入目标组名: " groupname if getent group "$groupname" &>/dev/null; then usermod -aG "$groupname" "$username" && echo "$username 已加入组 $groupname" log_action "添加用户 $username 到组 $groupname" else echo "组 $groupname 不存在" log_action "失败:组 $groupname 不存在,无法添加 $username" fi } function delete_group() { read -p "请输入要删除的组名: " groupname if getent group "$groupname" &>/dev/null; then groupdel "$groupname" && echo "组 $groupname 已删除" log_action "删除组: $groupname" else echo "组 $groupname 不存在" log_action "失败:尝试删除不存在的组: $groupname" fi } function list_user_groups() { read -p "请输入用户名: " username if id "$username" &>/dev/null; then groups "$username" log_action "查看用户所属组: $username" else echo "用户 $username 不存在" log_action "失败:用户 $username 不存在,无法查看所属组" fi } function list_group_members() { read -p "请输入组名: " groupname if getent group "$groupname" &>/dev/null; then getent group "$groupname" log_action "查看组成员: $groupname" else echo "组 $groupname 不存在" log_action "失败:组 $groupname 不存在,无法查看成员" fi } while true; do menu read -p "请输入选项 [1-12]: " choice case $choice in 1) add_user;; 2) del_user;; 3) lock_user;; 4) unlock_user;; 5) change_pass;; 6) add_sudo;; 7) create_group_add_user;; 8) join_group;; 9) delete_group;; 10) list_user_groups;; 11) list_group_members;; 12) echo "退出脚本"; log_action "退出脚本"; exit 0;; *) echo "无效选项,请重新输入。"; sleep 2;; esac echo "按回车继续..." read done 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/177701.html

(0)
上一篇 2025-05-03 13:00
下一篇 2025-05-03 13:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信