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

Linux---用户组

1. 用户组的基本概念

在 Linux 系统里,用户组是具有相同特征的用户集合。系统通过用户组对资源的访问权限进行管理,这意味着属于同一用户组的用户可以共享该组所拥有的权限。比如,一个项目团队的成员可以被划分到同一个用户组中,这样他们就可以共同访问项目相关的文件和目录。

2. 用户组的分类

2.1 基本用户组(Primary Group)

每个用户都必须属于一个基本用户组。当创建用户时,如果没有特别指定,系统会自动创建一个与用户名相同的用户组作为该用户的基本用户组。基本用户组的主要作用是为用户提供默认的文件和目录创建权限。例如,当用户创建一个新文件时,该文件的所属用户组就是用户的基本用户组。

2.2 附加用户组(Supplementary Group)

除了基本用户组外,用户还可以属于一个或多个附加用户组。附加用户组可以让用户获得额外的权限。例如,一个用户可能同时属于开发组和测试组,这样他就可以访问开发组和测试组所拥有的资源。

3. 用户组相关的配置文件

3.1 /etc/group

这是 Linux 系统中存储用户组信息的主要文件。文件中的每一行代表一个用户组,每行的格式如下:

group_name:password:GID:user_list
  • group_name:用户组的名称,是用户组的唯一标识。
  • password:用户组的密码,一般为空或使用 x 表示密码存储在 /etc/gshadow 文件中。
  • GID:用户组的唯一标识符,是一个整数。
  • user_list:属于该用户组的用户列表,多个用户之间用逗号分隔。

例如:

developers:x:1001:john,mary

表示名为 developers 的用户组,GID 为 1001,包含用户 johnmary

3.2 /etc/gshadow

该文件用于存储用户组的加密密码和组管理员信息,是一个加密的用户组信息文件,只有 root 用户可以访问。每行的格式如下:

group_name:password:admin_list:user_list
  • group_name:用户组的名称。
  • password:用户组的加密密码。
  • admin_list:组管理员列表,多个管理员之间用逗号分隔。
  • user_list:属于该用户组的用户列表,多个用户之间用逗号分隔。

4. 用户组的管理命令

4.1 groupadd

用于创建新的用户组,基本语法如下:

groupadd [选项] 组名

常见选项:

  • -g:指定用户组的 GID。
  • -r:创建系统用户组,其 GID 通常小于 1000。

例如,创建一个名为 designers 的用户组,并指定 GID 为 1002:

sudo groupadd -g 1002 designers
4.2 groupdel

用于删除指定的用户组,基本语法如下:

groupdel 组名

需要注意的是,不能删除当前有用户属于该组的用户组,除非先将用户从该组中移除。例如,删除名为 testers 的用户组:

sudo groupdel testers
4.3 groupmod

用于修改用户组的属性,基本语法如下:

groupmod [选项] 组名

常见选项:

  • -g:修改用户组的 GID。
  • -n:修改用户组的名称。

例如,将用户组 developers 的名称修改为 programmers

sudo groupmod -n programmers developers
4.4 usermod

除了管理用户信息外,还可以用于修改用户所属的用户组。使用 -a -G 选项可以将用户添加到指定的附加用户组中,而不会影响用户的基本用户组。例如,将用户 alice 添加到 designers 用户组:

sudo usermod -a -G designers alice
4.5 gpasswd

用于管理用户组的密码和成员,基本语法如下:

gpasswd [选项] 组名

常见选项:

  • -a:将用户添加到指定的用户组。
  • -d:将用户从指定的用户组中移除。
  • -M:指定属于该用户组的用户列表。

例如,将用户 bob 添加到 testers 用户组:

sudo gpasswd -a bob testers

5. 用户组的权限管理

在 Linux 系统中,文件和目录的权限分为读(r)、写(w)和执行(x)三种,并且可以针对文件和目录的所有者、所属用户组以及其他用户分别设置不同的权限。通过修改用户组的权限,可以控制属于该用户组的用户对文件和目录的访问权限。

5.1 chgrp

用于修改文件或目录的所属用户组,基本语法如下:

chgrp [选项] 组名 文件或目录名

常见选项:

  • -R:递归地修改指定目录及其子目录下所有文件和目录的所属用户组。

例如,将文件 project.txt 的所属用户组修改为 developers

sudo chgrp developers project.txt
5.2 chmod

用于修改文件或目录的权限,基本语法如下:

chmod [选项] 权限模式 文件或目录名

权限模式可以使用数字表示(如 755),也可以使用符号表示(如 u+rwx,g+rx,o-rw)。例如,将文件 report.txt 的所属用户组的权限设置为读和写:

chmod g+rw report.txt

6. 用户组的应用场景

6.1 团队协作

在企业或项目开发中,不同的团队成员可以被划分到不同的用户组中,每个用户组拥有不同的权限。例如,开发团队可以访问项目的源代码目录,而测试团队只能访问测试相关的文件和目录。

6.2 系统安全

通过合理设置用户组和权限,可以增强系统的安全性。例如,将普通用户添加到特定的用户组中,使其只能访问必要的系统资源,从而减少系统被攻击的风险。

6.3 资源共享

属于同一用户组的用户可以方便地共享文件和目录。例如,一个部门的员工可以被划分到同一个用户组中,他们可以在共享目录下共同编辑和管理文件。

7. 用户组的查看和验证

7.1 groups

用于查看当前用户或指定用户所属的用户组,基本语法如下:

groups [用户名]

如果不指定用户名,则默认查看当前用户所属的用户组。例如,查看用户 john 所属的用户组:

groups john
7.2 id

可以显示用户的详细信息,包括用户的 UID、GID 以及所属的附加用户组,基本语法如下:

id [用户名]

如果不指定用户名,则默认显示当前用户的信息。例如,查看用户 mary 的信息:

id mary

相关文章:

  • 精选一百道备赛蓝桥杯——4.冶炼金属
  • SpringMVC-文件上传
  • 游戏引擎学习第163天
  • Codeforces Round 986 (Div. 2)
  • leetcode日记(99)不同的子序列
  • 感受命令行界面的魅力——Linux环境下基础开发工具的使用
  • Leetcode-132.Palindrome Partitioning II [C++][Java]
  • 如何在PyCharm中利用Python对象自动提示提高开发效率?
  • 数学建模 第二节
  • 删除二叉搜索树中的节点
  • 第五章-动态规划
  • 实践 PyTorch 手写数字识别
  • 机试准备第17天
  • Suno的对手Luno:AI音乐开发「上传参考音频 - 方式一:通过二进制流的方式」 —— 「Luno Api系列|AI音乐API」第11篇
  • 【NLP 38、实践 ⑩ NER 命名实体识别任务 Bert 实现】
  • Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南
  • Springboot中的 Mapper 无法找到的 可能原因及解决方案
  • 一个简单的井字棋(Tic-Tac-Toe)游戏的C语言实现
  • 程序化广告行业(20/89):交易模式深度剖析与价值解读
  • 基于51单片机的多功能时钟闹钟proteus仿真
  • 为发期刊,高校学者偷贩涉密敏感数据!国安部披露间谍案细节
  • 湖北宜昌:在青山绿水间解锁乡村振兴“密码”
  • 李在明正式登记参选下届韩国总统
  • 习近平会见委内瑞拉总统马杜罗
  • 中铁房地产24.7亿元竞得上海松江新城宅地,溢价率20.42%
  • 前4个月我国货物贸易进出口同比增长2.4%,增速较一季度加快1.1个百分点