当前位置: 首页 > news >正文

学习Linux——组管理

组管理(Group Management)2025年10月28日

一、核心理论

1.组管理的底层原理与核心价值

1.为什么需要组管理?

在上篇用户管理中我们指出“Linux是多用户操作系统”,当多个用户需要共享资源(如文件、目录等),单独的为每个用户配置权限将会非常繁琐。通过组管理将用户进行归类,实现“一次配置,多用户共享权限”,大幅度简化权限管理。例如:

  • 开发团队成员需要的权限币普通用户要高,当成员人数过多时,一个一个修改会浪费大量时间。此时我们可以创建一个组并设置其权限,只需要把所有开成员规划到这个组中就可以完成上序操作。
  • 对于一个保密文件,只允许开发组成员查看修改时,只需要设置限制其他用户的权限,无需逐个处理用户文件
2.组、用户、权限三者关系:
  • 用户(User):通过 UID 唯一标识,必须属于至少一个组(基本组),可加入多个附加组。
  • 组(Group):通过 GID 唯一标识,是用户的集合,关联文件的 “所属组权限”。
  • 权限(Permission):文件的r(读)、w(写)、x(执行)权限分三级:所有者(u)、所属组(g)、其他用户(o),组权限直接作用于组内所有用户。
  • 当某个用户想要使用一个不属于自己的文件时(即GID值不一),查看其组归属(GID),同时查看文件所属组(GID),确定GID是否一致,如果不一致就只能使用该文件的其他用户权限(O)

三者关系图示:

用户(UID)→ 属于 → 组(GID)↓
文件 → 所属组(GID)→ 关联 → 组权限(g: rwx)

2.组类型及其GID范围

1.基本组(Primary Group)
  • 定义:用户创建时默认所属的组,用户的文件默认归属此组。
  • 特点:
    • 每个用户有且仅有一个基本组(/etc/passwd的 GID 字段指定);
    • 默认与用户名同名(如用户lisi的基本组默认是lisi);
    • 无法删除正在被用户作为基本组的组。
2.附加组(Supplementary Group)
  • 定义:用户额外加入的组,用于获取该组的权限(不影响用户默认文件的归属)。
  • 特点:
    • 一个用户可加入多个附加组(无数量限制);
    • 附加组用户列表记录在/etc/group的最后一个字段;
    • 删除组时,只需确保它不是任何用户的基本组(附加组不影响)。
3.组ID(GID)
  • 0root组(超级用户组,权限最高);
  • 1-499:系统组(预定义组或系统服务组,如bindaemonmysql);
  • 1000 及以上:自定义组(用户创建的组);

二、核心配置文件

组的所有信息存储在两个关键文件中,修改这些文件会直接影响组行为

1./etc/group:组基本信息文件

存储所有组的名称、GID、附加组用户列表。格式组名:密码占位符:GID:附加组用户列表

[root@localhost ~]# tail -1 /etc/group
dev:x:1001:zhangsan,lisi
解读:
组名为"dev":密码占位符(实际密码在/etc/gshadow,x表示密码存在):GID值为"1001"(自定义组):以dev作为附加组的用户"zhangsan , lisi "(基本组用户不出现在这)

2./etc/gshadow:组密码与管理员文件

储存组的加密密码、组管理员(可管理组成员)格式组名:加密密码:组管理员:附加组用户列表

[root@localhost ~]# tail -1 /etc/gshadow
dev:$6$abc123$xxx:zhangsan:lisi
解读:
组名为"dev":密码为"$6$abc123$xxx"SHA-512 加密的组密码(若为!或*表示无密码):组管理员为"zhangsan":附加用户"lisi"

加密密码拓展可看用户管理-/etc/shadow-拓展内容:密码加密)

3.辅助文件/etc/passwd(用户基本组关联)

用户的基本组在/etc/passwd中记录,格式:用户名:x:UID:GID:注释:家目录:shell

[root@localhost ~]# tail -10 /etc/passwd
zhangsan:x:1000:1001:张三:/home/zhangsan:/bin/bash
解读:
用户名为zhangsan:密码位:x(表示密码存储在 /etc/shadow 中):UID为1000:GID为1001(即该用户的基本组GID为1001(dev)):注释:张三(用户备注信息): 家目录为/home/zhangsan(用户登录后默认的工作目录):shell为/bin/bash(用户默认使用的命令解释器)

三、常用操作命令

组管理的命令围绕 “创建 - 查询 - 修改 - 删除 - 用户关联 - 密码管理” 展开,每个命令的选项需熟练掌握。

1.创建组groupadd

语法groupadd [选项] 组名

实例:

#创建一个指定GID为444的系统文件
[root@bogon ~]# groupadd -g 444 -r group_444
[root@bogon ~]# getent group group_444
group_444:x:444:

选项:

  • -g GID:指定组的 GID(必须唯一,非负整数)
  • -r:创建系统组(GID 在 1-499,用于系统服务)
  • -f:强制创建(若组已存在,不报错,仅提示 “组已存在”)
  • o: 允许 GID 重复(与-g配合,极不推荐,会导致权限混乱)

2.查看组groupsidgetentgrep

常用示例

  • 查看当前用户所属组:groups(输出当前用户的基本组和附加组)
  • 查看指定用户的详细组信息:id lisi(显示lisi的 UID、基本组 GID 及所有附加组 GID)

常用命令语法

  • groups:列出用户所属的所有组(基本组 + 附加组)

    语法:groups [user]

    实例:

    [root@bogon ~]# groups lisi
    lisi : lisi user1 group_444
    解读:
    用户lisi:基本组lisi + 附加组user1 group_444
    
  • id :显示用户的UID、基本组GID、附加组GIDs

    语法:id [user]

    实例:

    [root@bogon ~]# id lisi
    uid=1002(lisi) gid=1004(lisi) groups=1004(lisi),1003(user1),444(group_444)
    解读:
    用户的UID=1002、基本组GID=1004、附加组GIDs=1004(lisi),1003(user1),444(group_444)
    
  • getent group:查询指定组的详细信息(含成员)

    语法:getent group [组名]

    实例:

    [root@bogon ~]# getent group lisi
    lisi:x:1004:user1
    解读:
    组名lisi : 有密码 :GID值为1004 :组内其他成员 user1
    
  • grep:直接从配置文件中查找组记录

    语法:grep "组名" /etc/group

    实例:

    [root@bogon ~]# grep "lisi" /etc/group
    user1:x:1003:lisi
    lisi:x:1004:user1
    group_444:x:444:lisi
    

3.删除组groupdel

功能:从/etc/group/etc/gshadow中删除组记录。

语法groupdel 组名

限制

  • 不能删除用户的基本组(报错:cannot remove the primary group of user 'xxx');
  • 若组是附加组,删除后不影响用户基本组,但用户会失去该组的权限。

示例

[root@bogon ~]# grep ":444:" /etc/group
group_444:x:444:lisi
[root@bogon ~]# groupdel group_444
[root@bogon ~]# grep ":444:" /etc/group
[root@bogon ~]# 

注意事项:在删除组时如果该组为其他用户的基本组则会报错、所以我们采用以下策略。

查询组的 GID(确认组信息)
[root@bogon ~]# grep "lisi" /etc/group
user1:x:1003:lisi
lisi:x:1004:user1
查询绑定该 GID 的用户(确认基本组成员)
[root@bogon ~]# grep ":1004:" /etc/passwd
lisi:x:1002:1004::/home/lisi:/bin/bash
查看用户 ID 值(验证当前组归属)
[root@bogon ~]# id lisi
uid=1002(lisi) gid=1004(lisi) groups=1004(lisi),1003(user1)
更改用户的GID(解除基本组绑定)
[root@bogon ~]# usermod -g user1 lisi
更新查看用户ID值
[root@bogon ~]# id lisi
uid=1002(lisi) gid=1003(user1) groups=1003(user1)
删除组
[root@bogon ~]# groupdel lisi

修改(文件\目录)所属组chgrp

修改文件所属组的核心作用是:将文件的 GID 与指定组绑定,让该组的 “组权限”(g: rwx)对文件生效。

语法chgrp [选项] 目标组(组名或GID) 文件/目录

选项:

  • -R:递归修改:对目录及其下所有子文件、子目录生效(必须用于目录)

    chgrp -R dev /opt/project将/opt/project目录及所有内容的所属组改为dev
    
  • -h:仅修改符号链接本身的所属组,不跟随链接指向的原始文件(默认会跟随链接)

    chgrp -h dev link_to_log
    修改符号链接link_to_log的所属组为dev,原始文件不变
    
  • -c:仅显示被修改的文件(静默模式,未修改的文件不输出)

    chgrp -c dev *.txt
    只显示哪些.txt文件的所属组被改为dev
    
  • -v:详细输出:显示所有操作的文件(包括未修改的)

    chgrp -v dev report.txt
    输出 “report.txt 的所属组已改为 dev” 或 “report.txt 的所属组已是 dev”
    

常用实例:

递归修改目录文件所属组:将./d1目录下所有文件及其子目录所属组改为user1
#更改前先查看其权限
[root@bogon ~]# ll d1 d1/d2 d1/d2/t.txt
-rw-r--rw-. 1 root root  7 Oct 26 22:36 d1/d2/t.txtd1:
total 0
drwxr-xr-x. 2 root root 19 Oct 28 21:34 d2d1/d2:
total 4
-rw-r--rw-. 1 root root 7 Oct 26 22:36 t.txt
#递归更改所属组
[root@bogon ~]# chgrp -R user1 ./d1
#更新查看权限
[root@bogon ~]# ll d1 d1/d2 d1/d2/t.txt
-rw-r--rw-. 1 root user1  7 Oct 26 22:36 d1/d2/t.txtd1:
total 0
drwxr-xr-x. 2 root user1 19 Oct 28 21:34 d2d1/d2:
total 4
-rw-r--rw-. 1 root user1 7 Oct 26 22:36 t.txt

5.修改用户组归属(usermod / gpasswd

修改用户组归属的核心作用是:调整用户与组的关联关系(基本组 / 附加组),或配置组的管理规则(成员、密码、管理员),最终实现用户权限的精准控制。

1.usermod:修改用户的基本组 / 附加组

语法usermod [选项] 用户名

选项

  • -g 组名/GID:修改用户的基本组(替换原有基本组)

    usermod -g develop zhangsan
    将`zhangsan`的基本组改为`develop`,原基本组关联被替换。
    
  • -G 组1,组2:设置用户的附加组(覆盖原有附加组,仅保留指定组)

    usermod -G test,ops zhangsan
    将`zhangsan`的附加组重置为`test``ops`,原有附加组全部移除。
    
  • -aG 组1,组2:向附加组中追加新组(保留原有附加组,新增指定组)

    usermod -aG dev zhangsan
    给`zhangsan`新增`dev`附加组,不影响已有的其他附加组。
    
2.gpasswd:组密码与成员管理(更灵活)

语法gpasswd [选项] 组名

选项

七、总结:组管理的核心脉络

本质:通过 GID 将用户分组,简化多用户权限分配,核心是/etc/group/etc/gshadow配置文件。

操作闭环:

  • 创建(groupadd)→ 查询(groups/id)→ 修改(groupmod)→ 删除(groupdel);
  • 用户关联(usermod -aG/gpasswd -a)→ 权限生效(newgrp/ 重新登录);
  • 权限联动(chgrp改所属组 + chmod改组权限)。

关键原则:

  • 基本组唯一,附加组可多个;
  • GID 必须唯一(除非强制-o,不推荐);
  • 组权限仅作用于组内用户,与其他用户隔离。
http://www.dtcms.com/a/540724.html

相关文章:

  • 文件批量重命名(办公)脚本
  • 学习日记22:Adaptive Rotated Convolution for Rotated Object Detection
  • 十二要素应用
  • 同步、异步、阻塞、非阻塞的区别
  • 网站建设技术培训电商基地推广
  • 使用注解将日志存入Elasticsearch
  • 【STM32】WDG看门狗
  • 无锡市建设安全监督网站全国统一核酸检测价格
  • 做网站购买备案域名织梦高端html5网站建设工作室网络公司网站模板
  • 2.CSS3.(4).html
  • 记一次诡异的“偶发 404”排查:CDN 回源到 OSS 导致 REST API 失败
  • C++笔记(面向对象)类模板
  • Selenium IDE下载和安装教程(附安装包)
  • Quartz框架实现根据设置的cron表达式进行定时任务执行
  • linux20 线程同步--信号量
  • 内核的文件预取逻辑及blockdev的相关配置
  • [特殊字符] Web 字体裁剪优化实践:把 42MB 字体包瘦到 1.6MB
  • 平滑过渡,破解多库并存:浙人医基于金仓KFS的医疗信创实战解析
  • 做经营性的网站需要注册什么条件网站构思
  • Answer企业社区实战:零成本搭建技术问答平台,远程协作效率提升300%!
  • “听书”比“看书”更省力?
  • 大连 手机网站案例网站定位方案
  • window安装MYSQL5.5出错:a windows service with the name MYSQL alreadyexists....
  • 珠海做网站报价影响网站排名的因素
  • 6.1.2.2 大数据方法论与实践指南-离线任务SQL 任务开发规范
  • Java 大视界 -- Java 大数据在智能交通高速公路收费系统优化与通行效率提升实战(429)
  • 网站可以做怀孕单吗平面设计图数字标识
  • 图神经网络入门:手写一个 VanillaGNN-从邻接矩阵理解图神经网络的消息传递
  • 网站模版带后台酒类招商网站大全
  • 营销型网站创建网页制作三剑客通常指