Linux实操篇-组管理

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

不懂点Linux,都不好意思和别人说自己是开发,所以一些基础的必须掌握,同样的也是面试高频。

以下文章不定时更新…
Linux基础篇
Linux实操篇
Linux定制篇

一、组管理概念

1、文件目录所有者

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、文件目录所在组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、组管理实战

在 Linux 系统中,组管理 是对用户和组进行管理的一个重要方面。Linux 系统通过用户和组的配合来管理文件权限、访问控制和系统资源的使用。组管理涉及到创建、删除和管理组,向组中添加或移除用户等操作。

1. 组的概念

  • 组(Group):一组用户的集合,通常用于简化文件和资源的权限管理。通过将用户归类到同一个组,管理员可以方便地管理用户的访问权限。
  • 用户(User):在 Linux 系统中,用户是操作系统的基本管理单元,每个用户都可以属于一个或多个组。

2. 查看组信息

查看当前系统中所有的组:
cat /etc/group

该文件包含了所有的组信息,包括组名、组ID(GID)、组成员等。

查看某个用户所属的组:
groups <用户名>

或者:

id <用户名>

id 命令不仅显示用户所属的组,还显示用户的 UID 和 GID。

3. 组管理命令

创建一个新组
sudo groupadd <组名>

该命令会在系统中创建一个新的组。例如,创建一个名为 developers 的组:

sudo groupadd developers
删除一个组
sudo groupdel <组名>

删除一个不再需要的组。例如,删除 developers 组:

sudo groupdel developers
修改一个组的名称
sudo groupmod -n <新组名> <旧组名>

例如,将 oldgroup 改名为 newgroup

sudo groupmod -n newgroup oldgroup
向组中添加用户
sudo usermod -aG <组名> <用户名>

-a 参数表示追加用户到组,而不是覆盖其当前的组信息。-G 后面是组名,表示将用户添加到指定的组。例如,将用户 john 添加到 developers 组:

sudo usermod -aG developers john
从组中移除用户
sudo gpasswd -d <用户名> <组名>

或者:

sudo deluser <用户名> <组名>

例如,将用户 johndevelopers 组中移除:

sudo gpasswd -d john developers
创建一个带有特定 GID 的组
sudo groupadd -g <GID> <组名>

例如,创建一个组 testgroup 并指定 GID 为 1001:

sudo groupadd -g 1001 testgroup

4. 修改组文件

/etc/group 文件格式

每个组的信息通常存储在 /etc/group 文件中。该文件的格式如下:

group_name:password:GID:user_list
  • group_name:组名。
  • password:组密码,通常为空。
  • GID:组的 ID。
  • user_list:属于该组的用户列表(多个用户用逗号分隔)。

例如:

developers:x:1001:john,mary,alice

表示 developers 组的 GID 为 1001,成员有 johnmaryalice

5. 文件和目录权限与组

在 Linux 中,文件和目录的权限可以通过组来管理。每个文件或目录都有三种权限:读(r)写(w)执行(x)。这三种权限分别对 所有者所属组其他用户 有不同的控制。

文件权限的查看:
ls -l <文件名>

例如:

-rw-r--r-- 1 john developers 1234 Dec 17 12:34 example.txt
  • rw-:所有者(john)的权限,表示该用户有读和写权限。
  • r--:组(developers)的权限,表示组成员只有读权限。
  • r--:其他用户的权限。
改变文件的所属组
sudo chgrp <组名> <文件名>

例如,将 example.txt 文件的所属组更改为 developers

sudo chgrp developers example.txt
改变文件的权限
chmod <权限> <文件名>

例如,给文件 example.txt 增加组写权限:

chmod g+w example.txt

6. 组与用户权限管理

Linux 系统的权限管理可以根据用户和组来控制。例如,给某一组的成员设置特殊的读、写、执行权限,或者将某个文件的访问控制限定为某个组的成员。

组权限设置:
  • 添加组权限:给文件或目录的组增加读、写、执行权限。

    chmod g+r <文件名>  # 给组增加读权限
    chmod g+w <文件名>  # 给组增加写权限
    chmod g+x <文件名>  # 给组增加执行权限
    
  • 删除组权限:移除文件或目录的组权限。

    chmod g-r <文件名>  # 给组移除读权限
    chmod g-w <文件名>  # 给组移除写权限
    chmod g-x <文件名>  # 给组移除执行权限
    

7. 特殊权限与组

SGID(Set Group ID)

当设置了 SGID 权限时,文件或目录的执行权限将继承其所属组的权限。对于目录来说,任何在该目录中创建的文件都会自动继承该目录的组。

设置 SGID:

chmod g+s <文件名或目录名>
SUID 和 SGID 的区别:
  • SUID(Set User ID):设置在可执行文件上,执行该文件的用户会临时拥有该文件所属用户的权限。
  • SGID(Set Group ID):设置在文件或目录上,执行该文件的用户会临时拥有该文件所属组的权限。

8. 总结

组管理在 Linux 系统中是非常重要的,尤其是在多用户环境下。通过合理的组管理,可以实现对资源的有效控制。常见的组管理任务包括:

  • 创建、删除和修改组。
  • 管理用户和组的关系(添加/删除用户到组)。
  • 通过组来管理文件和目录的访问权限。
  • 使用特殊权限(如 SGID)来实现高级访问控制。

通过掌握这些基本命令,系统管理员可以更加高效地管理用户和组,提高系统安全性和可管理性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝影铁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值