「Linux命令基础」用户组管理

用户组基础概念

用户组是Linux系统中管理权限的重要机制,它像一个个容器,把具有相同权限需求的用户归类在一起。每个用户至少属于一个主组,同时可以加入多个附加组。这种设计让权限分配变得灵活高效。 系统通过组ID(GID)识别用户组,GID与用户ID(UID)类似,都是唯一的数字标识。root用户组的GID固定为0,系统组的GID通常小于1000,普通用户组的GID从1000开始分配。 用户组信息存储在/etc/group/etc/gshadow两个文件中。/etc/group文件记录组的基本信息,格式为组名:组密码占位符:GID:组成员列表。例如developers:x:1001:zhangsan,lisi表示developers组的GID是1001,包含zhangsan和lisi两个成员。

用户组管理实战案例

创建用户组

创建用户组使用groupadd命令,可以指定GID或让系统自动分配: 任务要求:以root用户登录进行测试运行。①查看/etc/group文件中用户组的基本信息;②创建普通用户组dev_team;③创建指定GID为2005的用户组test_team;④创建系统用户组system_group;⑤查看/etc/group文件中最后3条用户组信息

bash 复制代码
# ①查看/etc/group文件中用户组的基本信息
cat /etc/group
# **运行结果示例**
# root:x:0:
# bin:x:1:
# ......
# ②创建普通用户组dev_team
groupadd dev_team
# ③创建指定GID为2005的用户组test_team
groupadd -g 2005 test_team
# ④创建系统用户组system_group
groupadd -r system_group
# ⑤查看/etc/group文件中最后3条用户组信息
tail -3 /etc/group
# **运行结果示例**
# dev_team:x:1000:
# test_team:x:2005:
# system_group:x:995:

groupadd选项解析

  • -g 2005:明确指定组ID(GID=2005
  • -r 选项:表示创建系统组(GID自动分配在保留范围内

修改用户组属性

组创建后可能需要调整属性,使用groupmod命令: 任务要求:以root用户登录进行测试运行。①修改dev_team用户组的名称为dev_group;②修改用户组test_team的GUID为2006;③同时修改用户组test_team的用户组名qa_group和guid为2007;

bash 复制代码
# ①修改dev_team用户组的名称为dev_group
groupmod -n dev_group dev_team
# ②修改用户组test_team的GUID为2006
groupmod -g 2006 test_team
# ③同时修改用户组test_team的用户组名qa_group和guid为2007
groupmod -n qa_group -g 2007 test_team
# ④查看/etc/group文件中最后3条用户组信息
tail -3 /etc/group
# **运行结果示例**
# system_group:x:995:
# dev_group:x:1000:
# qa_group:x:2007:

groupmod选项解析

  • -n:表示修改用户组名称(--new-name 的缩写)
  • -g:表示修改组ID(--gid 的缩写)

管理组成员

组成员管理使用gpasswd命令,功能强大: 任务要求:以root用户登录进行测试运行。①创建账户名为zhangsan的账号;②将zhangsan账号添加到dev_group用户组;③将zhangsan账号从dev_group用户组移除;④再次将zhangsan账号添加到dev_group用户组;⑤将账户zhangsan设置为dev_group组的管理员;⑥设置用户组dev_group的密码

bash 复制代码
# ①创建账户名为zhangsan的账号
useradd zhangsan
# ②将zhangsan账号添加到dev_group用户组
gpasswd -a zhangsan dev_group
# ③将zhangsan账号从dev_group用户组移除
gpasswd -d zhangsan dev_group
# ④再次将zhangsan账号添加到dev_group用户组
gpasswd -d zhangsan dev_group
# ⑤将账户zhangsan设置为dev_group组的管理员
gpasswd -A zhangsan dev_group
# ⑥设置用户组dev_group的密码
gpasswd dev_group
新密码:******
请重新输入新密码:******

gpasswd选项解析

  • -a:--add-user 选项,添加指定用户到组
  • -d:--delete-user 选项,从组中移除用户
  • -A:--administrators 选项,设置组管理员

删除用户组

不再使用的组应及时使用groupdel命令删除: 任务要求:以root用户登录进行测试运行。①删除qa_group用户组;②删除dev_group用户组

bash 复制代码
# ①删除qa_group用户组
groupdel qa_group
# ②删除dev_group用户组
groupdel dev_group

系统维护:只能删除没有用户的附加组。如果组是某用户的主组,需要先修改用户的主组或删除用户后才能删除该组。

常见问题解决方案

  1. 组删除失败

    复制代码
    groupdel:不能移除用户的主组

    解决 :先用getent group 组名查看组成员,修改相关用户的主组usermod -g 新主组 用户名,再删除原组

  2. 用户不在组成员列表中

    bash 复制代码
    用户已添加到组但groups命令不显示

    解决 :用户需要重新登录才能使组成员变更生效,或使用newgrp 组名立即生效

  3. 权限不足

    bash 复制代码
    gpasswd:权限不够

    解决:只有root和组管理员能管理组成员,普通用户需要sudo权限或联系管理员操作

  4. GID冲突

    bash 复制代码
    groupadd:GID 2005已经存在

    解决 :查询现有GIDgetent group | grep 2005,选择未使用的GID或删除冲突组

实战练习

理论题

  1. 解释/etc/group文件中developers:x:1001:zhangsan,lisi各字段的含义 答案:依次为组名、组密码占位符(x表示密码在gshadow文件)、GID、组成员列表(多个用户用逗号分隔)
  2. 用户的主组和附加组有什么区别? 答案:主组是用户创建文件时的默认属组,每个用户必须有且只有一个主组;附加组用于扩展用户权限,用户可以加入多个附加组
  3. 什么情况下需要设置组密码? 答案 :当需要允许非组成员临时加入该组执行特定任务时设置组密码,用户可通过newgrp命令输入密码临时切换主组

实操题

  1. 以root用户登录进行测试运行。①创建dev用户组ID为3001;②创建test用户组GID为3002;③创建ops用户组组GID为3003;④创建普通user1;④将用户user1同时加入这三个组。 操作步骤

    bash 复制代码
    groupadd -g 3001 dev # ①创建dev用户组ID为3001
    groupadd -g 3002 test    # ②创建test用户组GID为3002
    groupadd -g 3003 ops # ③创建ops用户组组GID为3003
    useradd user1    # ④将用户user1同时加入这三个组
    usermod -aG dev,test,ops user1   # ④将用户user1同时加入这三个组
  2. 以root用户登录进行测试运行。①test_group用户组;②test_group用户组重命名为qa_team;③创建admin1用户;④设置test_group组管理员为admin1 操作步骤

    bash 复制代码
    groupadd test_group  # ①test_group用户组
    groupmod -n qa_team test_group   # ②test_group用户组重命名为qa_team;③创建admin1用户
    useradd admin1   # ③创建admin1用户
    gpasswd -A admin1 qa_team    # ④设置test_group组管理员为admin1
  3. 以root用户登录进行测试运行。①创建temp_group用户组;②创建temp_user用户;③将用户temp_user用户加入temp_group用户组;④查看temp_group用户组中是否有用户;⑤删除temp_group用户组。 操作步骤

    bash 复制代码
    groupadd temp_group  # ①创建temp_group用户组
    useradd temp_user    # ②创建temp_user用户
    gpasswd -a temp_user temp_group  # ③将用户temp_user用户加入temp_group用户组
    getent group temp_group  # ④查看temp_group用户组中是否有用户
    groupdel temp_group  # ⑤删除temp_group用户组

总结

用户组管理是Linux系统权限体系的核心部分。通过合理规划用户组,可以大幅简化权限管理工作。创建文件时,文件的属组默认是用户的主组,理解这一点对权限管理至关重要。组管理员机制实现了权限的委托管理,减轻了root用户的负担。实际工作中,建议为每个部门或项目创建独立的用户组,通过组成员关系控制文件访问权限。定期审查用户组成员关系,及时清理不用的组,能有效维护系统安全。记住,修改组属性后,现有文件的属组信息不会自动更新,需要手动处理。

相关推荐
果子⌂3 小时前
Kubernetes 服务发布进阶
linux·运维·服务器·云原生·容器·kubernetes·云计算
望获linux3 小时前
【Linux基础知识系列】第六十三篇 - 文件编辑器基础:vim
linux·运维·服务器·网络·嵌入式硬件·操作系统·嵌入式软件
末日汐4 小时前
Linux常见指令
linux·运维·服务器
!chen4 小时前
Linux dd命令 数据备份、转换与磁盘操作的终极工具
linux·数据库·tomcat
rzl025 小时前
SpringBoot6-10(黑马)
linux·前端·javascript
overFitBrain5 小时前
数据结构-4(常用排序算法、二分查找)
linux·数据结构·算法
UsamaBinLaden6 小时前
在 Alpine Linux 中创建虚拟机时 Cgroup 挂在失败的现象
linux·容器·虚拟化·incus·lxd·alpine
CheungChunChiu6 小时前
深入理解 eMMC RPMB 与 OP-TEE 在 Linux 系统中的应用开发
android·linux·运维·服务器·op-tee
心 一6 小时前
Linux服务器安全自动化审计实战:一键扫描账户/网络/进程/计划任务风险(附开源脚本)
linux·服务器·安全
Eating8 小时前
Linux 基础修炼手册
linux