一键掌控系统用户与权限:超实用Bash 用户组管理工具脚本
gudong366 2025-05-14 13:24 7 浏览
一、脚本概览
在日常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 工程师,或只是希望提升系统管理效率的用户,不妨一试!
使用方式
- 将脚本保存为
user_group_tool.sh
- 赋予可执行权限:
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
相关推荐
- U盘文件被删怎么简单恢复(u盘里的文件被误删了怎么找回)
-
现在这个社会不是靠关系靠路子,主要还是靠实力。刘强在机关工作,人长得帅气,工作能力又强。唯独一样不好,脾气太大,动不动就发火,因为小事常和同事发生口角。一次他火大的差点把办公桌给掀翻了,领导见他野蛮的...
- 不小心删除了一些文件?9 个最佳免费硬盘恢复软件
-
恢复您曾经无意或意外删除的所有文件和数据。您是否曾经错误地删除了一个对您的工作至关重要并导致您丢失所有进度的文件?我们为您提供了一些最好的免费硬盘恢复软件,以帮助您恢复意外删除的文件,以解决您的文件删...
- Studio 中文版:数据救援神器,误删 / 分区损坏 / RAID 恢复一键找回
-
Studio中文版:数据救援神器,误删/分区损坏/RAID恢复一键找回当文件意外删除、分区损坏,或RAID阵列崩溃时,一款可靠的数据恢复工具往往能挽回关键损失。R-Studio中文版...
- 你值得拥有的11款Linux数据恢复工具
-
如果你使用的是Linux操作系统,那么你一定想知道一旦硬盘崩溃的话又该如何保存和恢复数据。其实,现在有很多Linux数据恢复工具可以让我们摆脱数据安全的困扰。小编已经为各位准备好了一些最好的Linux...
- 误删文件内容怎么恢复(误删文件内容怎么恢复回来)
-
在日常使用电脑的过程中,误删文件的情况时有发生。无论是由于操作失误还是病毒攻击,误删文件都会给我们带来不小的困扰。幸运的是,随着技术的发展,误删文件恢复已不再是难题。本文将介绍几款国内外知名的误删...
- u盘如何恢复删除的文件?推荐5款u盘数据恢复软件!
-
在日常生活与工作中,U盘作为便捷的数据存储载体,频繁用于传输和保存各类重要文件。然而,误删文件的情况却时有发生,无论是珍贵的照片、重要的工作文档,还是精心制作的视频,一旦删除,都可能带来不小的麻烦。...
- 怎么恢复删除的数据?5种有效的数据恢复方法汇总!
-
在数字化办公与生活的时代,电脑里的每一份数据都承载着重要信息。然而,一个误操作就可能导致数据被删除,无论是尚未保存的重要文档,还是珍藏多年的照片,都可能瞬间“消失”。但其实,数据删除并不意味着永久丢...
- u盘删除文件怎么找回?5个数据恢复工具汇总,助你巧妙恢复数据!
-
在日常使用U盘的过程中,误删文件的情况时有发生,重要的工作文档、珍贵的照片视频一旦消失,难免让人焦急万分。别担心,只要选对数据恢复工具,被删除的数据仍有找回的可能。下面就为你汇总5款实用的数据...
- Linux下恢复误删文件:思路+实践(linux删除如何恢复)
-
周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到DaveChinner在邮件列表里提到了这个问题,...
- 苹果放大招!不用虚拟机了,Mac直接跑Linux容器,开发者效率翻倍
-
苹果这次真给开发者送福利了!今天凌晨(6月10日),苹果在官宣的Containerization框架直接炸了技术圈——Mac现在能原生运行Linux容器镜像了!这可不是虚拟机那种“套娃”方案,而是基...
- 7 款老牌经典软件,值得收藏(经典老歌软件)
-
Calibrehttps://calibre-ebook.com/Calibre是一个电脑电子书管理软件。肯定有人说了,电子书还要管理?那当然了。它的功能更强大的让你想象不到,首先它可以导入PDF,...
- 神仙级的免费开源电子书阅读器,还支持听书功能
-
神仙级的免费开源电子书阅读器,还支持听书功能,极空间部署『KoodoReader』哈喽小伙伴们好,我是Stark-C~前段时间不是给大家分享的电子书管理工具『TaleBook』嘛~,然后就有粉丝私信...
- 如何在Ubuntu系统中重置root密码(ubuntu忘记密码重置root密码命令)
-
很多人有个问题,就是喜欢把密码设置得很长很复杂,结果谁也没防住,却成功防住了自己ヽ(.ˇдˇ;)ノ对于现代人,特别是年轻人,都有过忘记密码的经历吧。在这篇文章中,我们来了解如何在Ubuntu1...
- 5款功能强大的PDF阅读器,让PDF阅读更轻松
-
分享5款功能强大的PDF阅读器,拥有丰富的PDF阅读工具,支持PDF文档划线、笔记、标记等操作,让PDF阅读更轻松!1.嗨动PDF编辑器一款实用的PDF处理软件,不仅可以阅读PDF文档,还能直接编辑、...
- 上班摸鱼利器! 免费好用的电子书阅读器,NAS轻松部署Koodo Reader
-
哈喽,大家好我是生活爱好者。笔者也是一名小说爱好者,平时用手机用某信读书,会员也开了,在家看体验也不错,但是上班的时候,在工作快速完成之后,想摸个鱼用手机就不太方便啦,作为爱折腾的人,必须要工作认真,...
- 一周热门
- 最近发表
- 标签列表
-
- linux一键安装 (31)
- linux运行java (33)
- ln linux (27)
- linux 磁盘管理 (31)
- linux 内核升级 (30)
- linux 运行python (28)
- linux 备份文件 (30)
- linux 网络测试 (30)
- linux 网关配置 (31)
- linux jre (32)
- linux 杀毒软件 (32)
- linux语法 (33)
- linux博客 (33)
- linux 压缩目录 (37)
- linux 查看任务 (32)
- 制作linux启动u盘 (35)
- linux 查看存储 (29)
- linux乌班图 (31)
- linux挂载镜像 (31)
- linux 软件源 (28)
- linux题目 (30)
- linux 定时脚本 (30)
- linux 网站搭建 (28)
- linux 远程控制 (34)
- linux bind (31)