CentOS 7 权限管理实战指南:用户组管理相关命令详解

前言

深入了解 CentOS 7 用户组管理的命令,掌握关键的用户组操作技巧。从创建和删除用户组、修改组属性,到设置组密码和管理组成员,这篇文章详细介绍了 CentOS 7 系统下常用的用户组管理命令,为读者小伙伴提供了实用而全面的指南。无论是初学者还是有经验的用户,都能在这篇文章中找到对用户组管理的实际运用方法,以便加强你的 Linux 系统管理技能,提高工作效率。

Linux权限控制的基本工作原理

Linux系统的权限管理基本原理是基于用户和用户组的访问控制。每个文件和目录都有一个所有者和一个所属用户组,以及对应的读、写、执行权限。那什么是所有者和所属组呢?又是如何控制权限呢?

  • 所有者(Owner)是指创建该文件或目录的用户。所有者具有最高权限,可以对文件或目录进行读、写和执行操作,也可以修改权限和更改所有者。
  • 所属用户组(Group)是指将文件或目录分配给某个特定用户组。所属用户组的成员具有与所有者相同的权限,但不能更改文件或目录的所有者。通常情况下,文件或目录的所属用户组与创建它的用户的默认用户组相同。
  • Linux系统有三种权限,分别是可读、可写、可执行,用数字4、2、1分别表示可读、可写、可执行。文件和目录的权限可以分为三部分,分别是所有者权限、所属用户组权限和其他用户权限,其中每一部分又分别包括读、写、执行权限。例如,一个文件的权限为-rw-r--r--,其中第一位表示这是一个普通文件;后面的三组r、w、x分别表示所有者、所属用户组、其他用户的读、写、执行权限。具体来说,这个文件的所有者具有读和写的权限,所属用户组和其他用户则只有读的权限。请注意,数字0代表没有权限,数字1代表执行权限,数字2代表写权限,数字4代表读权限。这些数字权限可以通过相加来表示不同权限的组合,例如,读和写权限为6(4+2),读、写和执行权限为7(4+2+1)。

通过设置文件和目录的权限,Linux系统可以实现对不同用户的权限控制,从而保证文件和目录的安全性和机密性。同时,Linux系统还提供了一些特殊权限,如SUID、SGID和Sticky Bit,以更精细地控制用户和进程对文件和目录的访问。

用户组管理相关命令

groups

groups 命令用于显示当前用户所属的用户组。它列出了当前用户在系统中所属的所有用户组的名称。

语法:

css 复制代码
groups [选项] [用户名]
  • 选项:一般情况下,groups 命令并不需要太多可选参数
  • 用户名:指定要查询的用户名。如果未提供用户名,则默认为当前登录用户。

使用示例:

  • 显示当前用户所属的用户组:
bash 复制代码
groups
  • 显示指定用户所属的用户组(例如,用户名为fanfu):
bash 复制代码
groups fanfu

gpasswd

gpasswd 命令用于管理组用户和组密码。它允许管理员添加或删除组成员,设置组管理员以及更改组密码等操作。

语法:

css 复制代码
gpasswd [选项] 组名

可选参数:

  • -a, --add 用户名:将指定的用户添加到组中。
  • -d, --delete 用户名:将指定的用户从组中删除。
  • -M, --members 用户列表:设置组成员列表,用逗号分隔。
  • -A, --administrators 管理员列表:设置组管理员,用逗号分隔。
  • -R, --restrictions 权限列表:设置组的权限限制。
  • -S, --sync:将组的密码同步到关联的GID。
  • -s, --crypt:使用指定算法设置密码加密方式。
  • -x, --expiredate 过期日期:设置密码的过期日期。

使用示例:

  • 创建一个新的组(例如,组名为developers):

    sudo groupadd developers

  • 将用户添加到组中(例如,用户名为fanfu):

css 复制代码
sudo gpasswd -a fanfu developers
  • 将用户从组中删除(例如,用户名为fanfu):

    sudo gpasswd -d fanfu developers

  • 设置组管理员(例如,管理员用户名为fanfu):

css 复制代码
sudo gpasswd -A fanfu developers
  • 设置或更改用户组密码:

    gpasswd developers

groupadd

groupadd 命令用于在 Linux 系统中创建新的用户组。

语法:

css 复制代码
groupadd [选项] 组名

可选参数:

  • -g, --gid GID:指定要分配给新组的GID(组标识符)。
  • -r, --system:创建一个系统组。
  • -K, --key VALUE:设置键值对,用于修改 /etc/login.defs 中的默认值。

使用示例:

  • 创建一个新的组(例如,组名为developers):

    sudo groupadd developers

  • 创建一个系统组(例如,组名为sysadmin):

    sudo groupadd -r sysadmin

  • 分配特定的GID给新组(例如,组名为testgroup,GID为1001):

yaml 复制代码
sudo groupadd -g 1001 testgroup

groupmod

groupmod 命令用于修改 Linux 系统中已有的用户组。

语法:

css 复制代码
groupmod [选项] 组名

可选参数:

  • -g, --gid GID:修改组的GID(组标识符)。
  • -n, --new-name 新名称:将组的名称更改为新名称。
  • -K, --key VALUE:设置键值对,用于修改 /etc/login.defs 中的默认值。

使用示例:

  • 将组的名称更改为新名称(例如,将组名testgroup更改为newgroup):

    sudo groupmod -n newgroup testgroup

  • 修改组的GID(例如,将组名testgroup的GID更改为1001):

yaml 复制代码
sudo groupmod -g 1001 testgroup

groupdel

groupdel 命令用于在 Linux 系统中删除用户组。

语法:

复制代码
groupdel 组名

可选参数:

使用示例:

  • 删除一个组(例如,组名为developers):

    sudo groupdel developers

请注意,只有超级用户才能执行 groupdel 命令。此命令将永久删除指定的组及其相关信息,包括组的密码和GID(如果存在)。因此,在执行此操作之前,请务必小心谨慎。

cat /etc/group

运行 cat /etc/group 命令,它会显示系统上所有用户组的信息。每一行代表一个用户组,每一行的结构是由冒号 : 分隔的字段组成,具体会包含以下字段:

  • 组名:用户组的名称。
  • 组密码:通常是 "x",表示密码存储在 /etc/gshadow 文件中。
  • GID:用户组的唯一标识符(Group ID)。
  • 组成员:属于该用户组的用户列表。

执行下面的命令,查询用户组名是developers的详细信息:

bash 复制代码
cat /etc/group | grep developers

输出结果如下所示:

makefile 复制代码
developers:x:1004:ayi,fanfu

在这个示例中:developers 是一个用户组,GID 为 1004,它只有两个个成员,即 ayi和fanfu。

写在最后

喜欢我为你精心准备的 CentOS 7 用户组管理命令文章吗?如果你觉得这篇指南对你的 Linux 系统管理技能提供了帮助,不妨点个赞支持一下!当然也建议反这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

相关推荐
maosheng11467 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken8 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2918 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C8 小时前
CPU Cache
linux·cache
颜酱8 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
Hoshino.419 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
小码哥_常9 小时前
Java后端定时任务抉择:@Scheduled、Quartz、XXL - Job终极对决
后端
uzong9 小时前
Skill 被广泛应用,到底什么是 Skill,今天详细介绍一下
人工智能·后端·面试
小码哥_常10 小时前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
播播资源10 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos