Linux系统使用超详细(九)~用户和组管理

本篇将要梳理有关用户和用户组的学习笔记,内容主要是基本的概念理解和常用命令的使用方法 !

 

目录

一、用户和用户组认识

1.1用户说明

1.1.1查看用户信息

①id命令:

②whoami 命令

③cat /etc/passwd 命令

④getent passwd 命令

⑤仅显示系统中所有用户名:

⑥ w命令:

1.1.2多用户系统结构

1.2用户分类

1.3用户组说明

1.3.1查看用户组信息

①cat /etc/group 命令

②getent group  命令

③仅显示系统中所有组名 

1.3.2用户组结构

二、用户和用户组关系

三、用户和用户组配置文件

四、用户和用户组管理

4.1用户管理

4.1.1创建用户

4.1.2修改用户

4.1.3删除用户

4.1.4切换用户

4.1.5设置用户密码:

4.2用户组管理

4.2.1添加用户组

4.2.2修改用户组

4.2.3删除用户组

4.2.4将用户添加到用户组:

4.2.5从用户组中移除用户:

4.3权限管理

4.3.1用户权限管理:

4.3.2用户组权限管理:


一、用户和用户组认识

在Linux中,用户和组是管理和控制系统资源访问权限的重要概念。

1.1用户说明

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个 账号,然后以这个账号的身份进入系统。以下是对用户的内容概括:
  • 用户是指使用计算机系统的个体或实体。每个用户都有一个唯一的用户名来标识自己。
  • 每个用户都被分配一个用户ID(UID),它是一个数字标识符,用于在系统中唯一标识该用户。
  • 用户可以拥有自己的主目录,用于存储个人文件和配置信息。
  • 用户可以通过登录来访问系统,并根据其权限执行操作,如运行程序、修改文件等。
  • 用户可以属于一个或多个组,并且每个用户至少属于一个主要组。
除此之外,用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
因为每个用户账号都拥有一个唯一的用户名和各自的口令,所以用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

1.1.1查看用户信息

Linux系统提供了多个命令可以查看用户的信息,以下是一些常用的命令: 

①id命令:

显示当前用户的身份信息,包括用户ID(UID)、组ID(GID)以及所属的组。 

输出分析:

  • uid=0(root): 这是id命令的输出结果,表示当前用户的用户ID为0,也就是root用户。
  • gid=0(root): 表示当前用户所属的组ID也是0,即root组。
  • 组(groups)=0(root): 表示当前用户所属的组名称为root。
  • 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023: 这是与SELinux相关的安全上下文信息,用于控制访问权限和限制资源使用。
②whoami 命令

查看当前登录用户的用户名:

whoami

会返回正在使用该终端的用户的用户名 ,当前以 root 用户登录到系统,并在终端中执行 whoami,它将返回 root 作为结果。

 

注意:

whoami 命令通常不需要任何参数或选项,只需简单地输入 whoami 即可查看当前登录用户的用户名。 

③cat /etc/passwd 命令

查看系统中所有用户的详细信息 :

cat /etc/passwd

执行结果:

Linux系统使用超详细(九)~用户和组管理_第1张图片 

该命令会读取并显示 /etc/passwd 文件的内容,其中包含了用户账户的相关信息。每行的格式为:

username:password:UID:GID:gecos:directory:shell

 注释:

  • username: 用户名
  • password: 加密后的密码(通常是 "x" 或 "*" 表示已在 /etc/shadow 文件中存储)
  • UID: 用户ID(唯一标识符)
  • GID: 主要组ID(与 /etc/group 中的组ID对应)
  • gecos: 用户的全名或注释字段
  • directory: 用户的主目录路径
  • shell: 用户默认的登录Shell

通过运行 cat /etc/passwd 命令,可以查看和分析系统中所有用户的信息。

注意:

该文件对于普通用户只有读权限,需要使用超级用户(root)权限才能完整查看 /etc/passwd 文件的内容。

④getent passwd 命令

列出系统中所有用户的信息:

getent passwd

执行结果:

Linux系统使用超详细(九)~用户和组管理_第2张图片 

getent passwd 命令用于从系统的用户数据库中获取所有用户的信息。它会返回与 /etc/passwd 文件相同格式的输出,包含了系统中所有用户的详细信息。

cat /etc/passwd 不同的是,getent passwd 命令可以从不仅限于 /etc/passwd 文件中,还包括其他用户数据库(如 NIS、LDAP 等)中获取用户信息。 

注意:

对于普通用户,此命令只返回他们有权限查看的用户数据。若要完整查看所有用户信息,需要使用超级用户(root)权限。 

⑤仅显示系统中所有用户名:
cut -d: -f1 /etc/passwd

 执行结果:

Linux系统使用超详细(九)~用户和组管理_第3张图片

通过指定分隔符为 :,并选择第一个字段(用户名字段),该命令将提取并显示所有用户的用户名。这个命令可以帮助我们快速获取系统上的用户列表,而不包括其他详细信息。

注意:

对于普通用户,此命令只返回他们有权限查看的用户数据。若要完整查看所有用户信息,需要使用超级用户(root)权限。 

⑥ w命令:

显示当前登录系统的用户信息,包括用户名、终端、登录时间、运行的命令等。

Linux系统使用超详细(九)~用户和组管理_第4张图片 

注释:

  • 00:55:59 up 1:11 表示系统已经运行了1小时11分钟,当前时间为00:55:59。
  • 2 users 表示有两个用户登录到系统中。
  • load average: 0.00, 0.01, 0.05 表示系统的平均负载情况,分别对应过去1分钟、5分钟和15分钟的平均负载。

在下面的表格中,显示了每个登录用户的详细信息:

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 23:45 1:10m 0.02s 0.02s -bash
root pts/0 192.168.204.1 23:46 7.00s 0.03s 0.01s w

解析每列的含义如下:

  • USER: 用户名
  • TTY: 终端设备或会话类型
  • FROM: 连接来源(IP地址或主机名)
  • LOGIN@: 登录时间
  • IDLE: 空闲时间
  • JCPU: 用户和系统模式下消耗的CPU时间(以秒为单位)
  • PCPU: 仅在用户模式下消耗的CPU时间(以秒为单位)
  • WHAT: 当前用户正在执行的命令或活动

根据上述信息,可以看到当前系统上有两个用户,一个登录到tty1终端,另一个通过pts/0终端从IP地址192.168.204.1登录。同时,还提供了其他有关用户的信息,例如登录时间、空闲时间以及当前正在执行的命令(在本例中是w命令)。 

1.1.2多用户系统结构

虽然Linux的多用户系统结构没有一个固定的标准图表,但可以描述一种常见的多用户系统结构。

                                +-------------------+
                                |      硬件设备     |
                                +-------------------+
                                          |
                                          V
                                +-------------------+
                                |      操作系统     |
                                +-------------------+
                                          |
                    +---------------------------------------+
                    |                  用户                   |
                    +---------------------------------------+
                    /                     |                  \
          +--------------+   +----------------+   +-----------------+
          | 用户1(User1) |   | 用户2(User2)  |   | 用户3(User3)   |
          +--------------+   +----------------+   +-----------------+

上述图表表示了一个典型的多用户系统结构。在这个结构中:

  • 硬件设备是计算机的物理组成部分,包括处理器、内存、磁盘等。
  • 操作系统是控制和管理硬件资源的软件层,例如Linux操作系统。
  • 多个用户可以通过终端或网络连接访问操作系统。
  • 每个用户都有自己的账户和登录凭据,用于身份验证和权限管理。
  • 操作系统根据用户的登录信息创建相应的进程和用户环境。
  • 每个用户都有自己的独立工作空间和主目录,用来存储个人文件和配置信息。
  • 用户可以使用命令行界面或图形界面与操作系统进行交互,并执行各种任务和操作。

该结构允许多个用户同时使用同一台计算机,每个用户都可以独立地进行工作,而不会相互干扰。操作系统负责管理用户之间的资源分配、权限控制和任务调度,以确保系统的安全性和高效性。

1.2用户分类

在Linux系统中,用户可以根据其用途和权限的不同进行分类。以下是常见的Linux用户分类:

①超级用户(Superuser)

  • 超级用户,也称为root用户,是系统中最高权限的用户。
  • root用户拥有对整个系统的完全控制权,可以执行任何操作,包括修改系统配置、安装软件、管理其他用户等。
  • 超级用户(root)的UID为0

普通用户(Regular User)

  • 普通用户是指一般使用计算机的用户。
  • 普通用户只能访问和修改自己的文件及部分系统资源,无法对整个系统做出重要的变更。
  • 普通用户可以通过sudo命令获取临时超级用户权限,执行需要特权的操作。
  • 普通用户的UID从500开始递增。这些用户是系统中的一般用户,具有交互式登录权限,并且可以根据需要创建、管理和使用文件。

③服务用户(Service User)

  • 服务用户是专门用于运行系统服务和守护进程的用户。
  • 服务用户通常没有登录权限,它们的作用是限制服务进程的权限,以增加系统的安全性。
  • 每个服务用户都与一个或多个特定的服务相关联,这些服务可以在后台运行并提供特定的功能。

④系统用户(System User)

  • 系统用户是用于执行系统任务和特定应用程序的用户。
  • 系统用户通常没有登录权限,它们被用来运行需要特定环境的任务和脚本。
  • 与服务用户类似,系统用户的目的是限制其操作范围,提高系统的安全性和稳定性。
  • 系统用户的UID范围为1到499。这些用户账户用于运行系统服务和进程,通常没有交互式登录权限。

⑤匿名用户(Anonymous User)

  • 匿名用户是不需要身份验证即可访问某些服务或资源的用户。
  • 常见的例子是FTP服务器上的匿名用户,允许用户通过匿名方式下载或上传文件。

 超级用户(root)拥有系统中最高的权限,可以创建、管理和删除普通用户。

1.3用户组说明

为了方便管理和授权,用户可以被组织成组。组可以包含一个或多个用户。组通过组ID(GID)进行标识。组的主要作用是为其成员提供相同的访问权限,使得系统管理员可以更轻松地管理用户权限。

  • 组是将相关用户集合在一起的方式,以便更方便地管理和分配权限。
  • 组有一个唯一的组名和组ID(GID),与用户ID类似,用于在系统中唯一标识该组。
  • 每个组可以包含多个用户,这些用户共享同一组的访问权限。
  • 组可以用于控制对文件和目录的访问权限,通过设置文件或目录的所有者和组权限。
  • 一个用户可以同时属于多个组,但只能有一个主要组。

1.3.1查看用户组信息

①cat /etc/group 命令

显示系统中所有组的详细信息,包括组名、组ID以及该组下的用户列表。

cat /etc/group

执行结果:

Linux系统使用超详细(九)~用户和组管理_第5张图片 

它会读取并显示 /etc/group 文件的内容,其中包含了每个用户组的详细信息。

每行的格式为:

groupname:password:GID:user1,user2,...
  • groupname: 用户组名
  • password: 加密后的密码(通常是 "x" 或 "*" 表示已在 /etc/gshadow 文件中存储)
  • GID: 用户组ID(唯一标识符)
  • user1,user2,...: 属于该用户组的用户名列表

这个命令可以帮助我们快速获取系统上的用户组列表,以及查看每个用户组所包含的成员。 

注意:

该文件对于普通用户只有读权限,需要使用超级用户(root)权限才能完整查看 /etc/group 文件的内容。 

②getent group  命令

列出系统中所有组的信息:

getent group

执行结果:

Linux系统使用超详细(九)~用户和组管理_第6张图片 

getent group 命令用于从系统的用户组数据库中获取所有用户组的信息。它会返回与 /etc/group 文件相同格式的输出,包含了系统中所有用户组的详细信息。

cat /etc/group 不同的是,getent group 命令可以从不仅限于 /etc/group 文件中,还包括其他用户组数据库(如 NIS、LDAP 等)中获取用户组信息。 

注意:

对于普通用户,此命令只返回他们有权限查看的用户组数据。若要完整查看所有用户组信息,需要使用超级用户(root)权限。 

③仅显示系统中所有组名 
cut -d: -f1 /etc/group

通过指定分隔符为 :,并选择第一个字段(用户组名字段),该命令将提取并显示所有用户组的名称。 

Linux系统使用超详细(九)~用户和组管理_第7张图片

1.3.2用户组结构

在Linux系统中,用户组是用于组织和管理用户的集合。用户组可以用来控制文件和目录的访问权限,以及允许或限制特定操作。

Linux用户组结构通常包括以下几个方面:

  1. 超级用户组(root):超级用户组是系统中具有最高权限的用户组,其组名通常为 "root"。只有属于该组的用户才能以超级用户身份执行特权操作,并对系统进行更改。

  2. 系统用户组:系统用户组用于运行系统服务和进程。这些用户组的名称可能因系统而异,但通常以 sys, adm, daemon 等开头或包含这些关键字。

  3. 普通用户组:普通用户组用于一般用户的分类,每个用户都会分配到一个或多个普通用户组。这样可以方便地管理和分配不同用户的权限和资源。例如,一个用户可能属于 users 组、audio 组和 video 组等。

用户组之间还可以建立层次结构和关系:

  • 主组:每个用户在系统中都有一个主组,通常以用户的用户名命名。主组是用户默认属于的组,也是与用户家目录相关联的组。

  • 附加组:除了主组外,用户还可以属于其他附加组。这使得用户可以在不同的上下文中具有不同的访问权限。

通过使用适当的用户组,管理员可以有效地管理用户权限和资源访问,并确保系统的安全性和可管理性。

二、用户和用户组关系

在Linux系统中,一个组可以没有任何用户,也可以包含一个或多个用户。普通用户可以同时属于多个用户组,并且可以通过将用户添加到组来授权他们访问特定资源、共享文件等。下面是对用户和用户组关系的概括描述:

  1. 用户属于一个或多个用户组:每个用户可以属于一个主组和多个附加组。主组通常以用户的用户名命名,而附加组则用于提供额外的访问权限和资源共享。

  2. 用户组拥有权限:文件和目录在Linux系统中具有所属用户和所属用户组的权限。用户组可以被授权对特定文件或目录进行读取、写入和执行操作,而不是单独为每个用户指定权限。

  3. 文件和目录归属于用户和用户组:每个文件和目录都有一个所有者(用户)和一个所属用户组。这决定了谁可以访问、修改或执行文件。用户(所有者)通常具有最高权限,而用户组权限和其他用户的权限受到相应限制。

  4. 用户组的继承:当用户创建新文件或目录时,它们会继承创建者的用户组。这意味着新文件或目录将自动具有与创建者相同的所属用户组,从而实现资源共享和权限管理。

三、用户和用户组配置文件

Linux系统中的用户和组信息通常存储在/etc/passwd和/etc/group文件中。

①/etc/passwd:该文件包含了系统中所有用户的基本信息。每行表示一个用户,字段使用冒号(:)分隔。

Linux系统使用超详细(九)~用户和组管理_第8张图片

②/etc/group:该文件包含了系统中所有用户组的信息。每行表示一个用户组,字段使用冒号(:)分隔。

Linux系统使用超详细(九)~用户和组管理_第9张图片

两个文件的内容前面已汇总,这里不再描述。

/etc/passwd                   保存用户信息
/etc/shadow                   保存用户密码(以加密形式保存)
/etc/group                      保存组信息
/etc/login.defs               用户属性限制,密码过期时间,密码最大长度等限制
/etc/default/useradd     显示或更改默认的 useradd 配置文件

四、用户和用户组管理

4.1用户管理

在Linux系统中,用户管理是管理员对用户账户进行创建、删除、修改和权限管理的过程。以下是一些常见的Linux用户管理任务:

4.1.1创建用户

使用useradd命令可以创建新的用户账户。它可以在系统上添加一个新的用户账号,并为该用户分配用户ID(UID)、初始组、家目录和登录shell等属性。

语法格式:

useradd [选项] 用户名

常用选项包括:

  • -c, --comment:为用户添加注释,通常是用户的全名或描述。

  • -d, --home:指定用户的家目录路径。

  • -g, --gid:设置用户的主组ID。

  • -G, --groups:指定用户所属的附加组ID列表。

  • -s, --shell:指定用户的默认shell。

  • -m, --create-home:在创建用户时,自动创建用户的家目录。

  • -p, --password:设置用户的密码,需要使用经过加密的密码。

  • -e, --expiredate:设置用户的过期日期,格式为YYYY-MM-DD。

除了上述常用选项之外,useradd命令还有其他一些选项和参数,可以使用man useradd命令在终端中查看useradd的完整文档和使用说明。 

例1:创建一个名为"username"的用户,可以执行以下命令:

sudo useradd username

例2:创建一个名为johndoe的用户,添加了一个注释为"John Doe",指定了/home/johndoe为家目录,并将默认shell设置为/bin/bash,可以执行以下命令:

useradd -c "John Doe" -m -s /bin/bash johndoe

例3:分别创建三个新用户账号:aabbcc,并将它们的用户ID(UID)设置为 555、556 和 557,这些用户将/a 作为家目录, 可以执行以下命令:

useradd -u 555 -d /a aa
useradd -u 556 -d /a bb
useradd -u 557 -d /a cc

注意:

  • ①执行useradd命令需要root或具有管理员权限的用户。 
  • ②使用 useradd 命令只会创建用户账户,但不会设置密码。通常需要使用 passwd 命令为新用户设置密码。

4.1.2修改用户

使用usermod命令可以修改用户的各种属性,它允许系统管理员对现有用户进行修改,包括更改用户的用户名、家目录、主组、附加组、注释等。

语法格式:

usermod [选项] 用户名

常用选项包括:

  • -c, --comment:修改用户的注释。

  • -d, --home:修改用户的家目录路径。

  • -g, --gid:修改用户的主组ID。

  • -G, --groups:修改用户所属的附加组ID列表。

  • -s, --shell:修改用户的默认shell。

  • -L, --lock:锁定用户账号,禁止用户登录。

  • -U, --unlock:解锁用户账号,允许用户登录。

  • -e, --expiredate:修改用户的过期日期。

除了上述常用选项之外,usermod命令还有其他一些选项和参数,可以使用man usermod命令在终端中查看usermod的完整文档和使用说明。

例1:要将"username"用户所属的主组更改为"newgroup",可以执行以下命令:

sudo usermod -g newgroup username

例2:将修改名为johndoe的用户的注释为"John Smith",家目录为/home/johnsmith,并将默认shell更改为/bin/bash。 可以执行以下命令:

usermod -c "John Smith" -d /home/johnsmith -s /bin/bash johndoe

例3:分别修改账号 aabbcc 的家目录路径和登录shell:

  • 对于账号 aa,将家目录路径修改为 /newhome1,登录shell修改为 /bin/bash
  • 对于账号 bb,将家目录路径修改为 /newhome2,登录shell修改为 /bin/sh
  • 对于账号 cc,将家目录路径修改为 /newhome3,登录shell修改为 /usr/bin/zsh

可以执行以下命令:

usermod -d /newhome1 -s /bin/bash aa
usermod -d /newhome2 -s /bin/sh bb
usermod -d /newhome3 -s /usr/bin/zsh cc

例4:分别修改用户 aa 的家目录路径为 /newhome,修改用户 bb 的登录shell为 /bin/bash,以及修改用户 cc 的登录名为 newname ,可以执行以下命令:

usermod -d /newhome aa
usermod -s /bin/bash bb
usermod -l newname cc

注意:

执行usermod命令需要root或具有管理员权限的用户。只有具有足够权限的用户才能修改其他用户的属性。 

并且在对用户账户进行修改之后,可能需要相应地调整相关文件和权限,例如迁移用户的文件到新的家目录路径等。

4.1.3删除用户

使用userdel命令可以删除用户账户。它允许系统管理员从系统中删除不再需要的用户账号,并可选择是否同时删除用户的家目录和邮件文件。

语法格式:

userdel [选项] 用户名

常见选项包括:

  • -r, --remove:删除用户账户及其关联的家目录。
  • -f, --force:强制删除用户账户,即使用户正在登录或有其他进程。
  • -Z, --selinux-user:指定要删除的用户的SELinux用户。

除了上述常用选项之外,userdel命令还有其他一些选项和参数,可以使用man userdel命令在终端中查看userdel的完整文档和使用说明。

默认情况下,userdel命令只会删除用户账户,不会删除其相关文件和目录。如果需要同时删除用户的主目录,可以使用-r选项。

例1:要删除"username"用户及其主目录,可以执行以下命令:

sudo userdel -r username

例2:删除名为johndoe的用户,并删除用户的家目录和邮件文件(如果有的话),可以执行以下命令:

userdel -r johndoe

例3:分别删除用户账户 aabbcc,并且同时删除与这些账户关联的家目录,可以执行以下命令:

userdel -r aa
userdel -r bb
userdel -r cc

4.1.4切换用户

使用su命令可以在当前会话中切换到其他用户。su命令是在Linux和Unix系统中用于切换用户身份的命令。它允许当前登录的用户在不退出当前会话的情况下切换到其他用户账号,以便执行特定的任务或访问受限资源。

语法格式:

su [选项] [用户名]

常见选项包括:

  • -c, --command:执行指定的命令,而不是打开新的shell。
  • -l, --login:模拟登录为目标用户,加载用户的环境变量和配置文件。
  • -s, --shell:使用指定的shell,而不是目标用户的默认shell。

除了上述常用选项之外,su命令还有其他一些选项和参数,可以使用man su命令在终端中查看su的完整文档和使用说明。 

默认情况下,su命令会切换到超级用户(root)。在这种情况下,通常需要输入超级用户的密码才能完成切换。

例1:要切换到"username"用户,可以执行以下命令:

su username

例2:切换到超级用户(root)身份,可以执行以下命令:

su

例3:切换到特定用户身份(同例1),可以执行以下命令:

su 用户名

例4: 执行特定命令并切换到另一个用户身份,可以执行以下命令:

su -c "命令" 用户名

例5:模拟登录为目标用户,并打开新的shell,可以执行以下命令:

su -l 用户名

例6: 切换到johndoe用户,并执行ls -l命令,可以执行以下命令:

su -c "ls -l" johndoe

注意:

在使用 su 命令切换用户时,需要提供目标用户的密码才能成功进行切换。 

建议:

为了系统安全性,建议在完成需要root权限的任务后及时退出root账号,以避免潜在的安全风险。

4.1.5设置用户密码

使用passwd命令为用户设置密码。passwd命令是在Linux系统中用于更改用户密码的命令。它允许用户修改自己的密码或管理员修改其他用户的密码。

语法格式:

passwd [选项] [用户名]

常见选项包括:

  • -l, --lock:锁定用户账户,禁止用户使用该账户登录。
  • -u, --unlock:解锁被锁定的用户账户。
  • -d, --delete:删除用户密码,使用户无法通过密码登录,但仍可使用其他身份验证方法登录。
  • -e, --expire:将用户的密码设置为过期状态,在下次登录时需要强制更改密码。
  • -x, --maxdays:设置用户密码的最大有效天数。
  • -n, --mindays:设置用户必须保持密码不变的最短天数。
  • -w, --warndays:在密码过期之前提前多少天向用户发出警告。

 如果没有提供用户名,则默认为当前用户。除了上述常用选项之外,passwd命令还有其他一些选项和参数,可以使用man passwd命令在终端中查看passwd的完整文档和使用说明。

示例用法:

①更改当前用户密码

passwd

②更改特定用户的密码:

passwd 用户名

③锁定用户账户:

passwd -l 用户名

④解锁用户账户:

passwd -u 用户名

例1:要设置"username"用户的密码,可以执行以下命令:

sudo passwd username

 例2:要求管理员权限,然后提示输入管理员密码,接着要求输入johndoe用户的新密码和确认新密码,可以执行以下命令:

sudo passwd johndoe

注意:

执行passwd命令需要知道当前用户的当前密码(除非当前用户是root用户),或者具有管理员权限。密码通常应该是强密码,并且应定期更改以增强系统安全性。 

4.2用户组管理

在Linux系统中,用户组管理是管理员对用户组进行创建、删除和权限管理的过程。以下是一些常见的Linux用户组管理任务:

4.2.1添加用户组

使用groupadd命令可以创建一个新的用户组。groupadd命令是在Linux系统中用于创建新的用户组的命令。它允许系统管理员在系统中添加新的用户组,并为该用户组分配一个唯一的组ID(GID),设置相关的组属性和选项。

语法格式:

groupadd [选项] 组名

常见选项包括:

  • -g, --gid:指定用户组的组ID(GID),如果不提供则由系统自动分配。
  • -r, --system:创建一个系统用户组,其GID通常小于1000,并且不会出现在登录界面的用户列表中。
  • -f, --force:即使用户组已经存在,也强制创建该用户组。

 除了上述常用选项之外,groupadd命令还有其他一些选项和参数,可以使用man groupadd命令在终端中查看groupadd的完整文档和使用说明。

例如,创建名为"mygroup"的用户组,可以执行以下命令:

sudo groupadd mygroup

系统将自动分配一个唯一的组ID(GID)给这个用户组。 

注意:

在使用 groupadd 命令创建用户组时,需要具有适当的管理员权限。确保用户组的名称唯一且符合系统命名规范。 

4.2.2修改用户组

使用groupmod命令可以修改用户组的各种属性,如组名、组ID等。

语法格式:

groupmod [选项] 组名

常见选项包括:

  • -g, --gid:修改用户组的组ID(GID)。
  • -n, --new-name:修改用户组的新名称。
  • -o, --non-unique:允许使用非唯一的组ID(GID)。
  • -R, --root:将命令作为超级用户(root)运行。

 除了上述常用选项之外,groupmod命令还有其他一些选项和参数,可以使用man groupmod命令在终端中查看groupmod的完整文档和使用说明。

例1:将名为"mygroup"的用户组的组名更改为"newgroup",可以执行以下命令:

groupmod -n newgroup mygroup

例2:修改名为 "mygroup" 的用户组的组ID(GID)为 1234,可以执行以下命令:

groupmod -g 1234 mygroup

4.2.3删除用户组

使用groupdel命令可以删除一个用户组。它允许系统管理员从系统中删除不再需要的用户组。

语法格式:

groupdel [选项] 组名

常见选项包括:

  • -f, --force:强制删除用户组,即使用户组还有关联的用户。
  • -R, --root:将命令作为超级用户(root)运行。

注意:

如果该组仍有成员,则需要先从组中移除成员,然后才能删除该组。

例如,要删除名为"mygroup"的用户组,可以执行以下命令:

sudo groupdel mygroup

如果该用户组仍有关联的用户,则会出现错误提示,除非使用 -f 选项来强制删除。

注意:

执行groupdel命令需要root或具有管理员权限的用户。只有具有足够权限的用户才能删除用户组。 

4.2.4将用户添加到用户组

使用usermod命令可以将用户添加到一个或多个用户组。

例如,要将名为"username"的用户添加到"mygroup"用户组,可以执行以下命令: 

sudo usermod -aG mygroup username

-a 是增加,如果没有-a,原来的辅助组都删除了 

4.2.5从用户组中移除用户

使用gpasswd命令可以从用户组中移除用户。gpasswd 命令用于管理用户组的密码和成员。它允许管理员设置用户组的密码、添加或删除用户组的成员。

语法格式:

gpasswd [选项] 组名

常见选项包括:

  • -a, --add 用户名:将指定的用户添加到目标用户组。
  • -d, --delete 用户名:从目标用户组中删除指定的用户。
  • -r, --remove-password:从目标用户组中移除密码,使用户组无需密码即可加入。
  • -R, --restrict:限制只有用户组的所有者和超级用户(root)可以添加或删除成员。
  • -M, --members 用户列表:设置用户组的成员列表,替换原有成员列表。

管理用户组的示例:

①添加用户到用户组:

gpasswd -a 用户名 组名

②从用户组中删除用户:

gpasswd -d 用户名 组名

③设置用户组的密码:

gpasswd 组名

④移除用户组的密码:

gpasswd -r 组名

例如,要将名为"username"的用户从"mygroup"用户组中移除,可以执行以下命令:

sudo gpasswd -d username mygroup

 注意:

执行gpasswd命令需要root或具有管理员权限的用户。

4.3权限管理

  • Linux系统使用权限位(permission bits)来管理用户对文件和目录的访问权限。权限位分为三类:用户权限、组权限和其他用户权限。
  • 用户权限表示文件所有者对文件的权限。
  • 组权限表示与文件属于同一组的用户对文件的权限。
  • 其他用户权限表示除了文件所有者和属于同一组的用户之外的其他用户对文件的权限。
  • 权限位包括读取(r)、写入(w)和执行(x),分别表示对文件的读取、修改和执行操作的权限。

管理员可以通过正确配置用户和组的权限,确保系统安全性和文件的完整性。 

4.3.1用户权限管理

通过修改文件和目录的所有者和组权限,可以控制用户对特定资源的访问权限。可以使用chownchgrp命令修改文件和目录的所有者和组,使用chmod命令修改权限位。

4.3.2用户组权限管理

通过修改文件和目录的组所有权和权限位,可以控制用户组对特定资源的访问权限。可以使用chgrp命令修改文件和目录的组所有权,使用chmod命令修改权限位。

你可能感兴趣的:(Linux,linux,运维,服务器)