用户和用户组

本文涉及的产品
云原生网关 MSE Higress,422元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文介绍了Linux系统中的用户账户和组的基本概念,包括普通用户和超级用户(root)的定义和区别,以及组的概念和作用。文章还详细描述了用户账户和组的相关文件(如/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow)的结构和内容,并提供了创建和删除用户账户及组的基本命令和选项。

 1 什么是用户账户和组 ?

1.1 用户

Linux操作系统是多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源。用户账户是用户的身份标识。用户通过用户账户可以登录到系统,并且访问已经被授权的资源。系统依据账户来区分属于每个用户的文件、进程、任务,并给每个用户提供特定的工作环境(例如,用户的工作目录、shell版本以及图形化的环境配置等),使每个用户都能各自不受干扰地独立工作。

Linux系统下的用户账户分为两种:

  • 普通用户账户:在系统中只能进行普通工作,只能访问他们拥有的或者有权限执行的文件。
  • 超级用户账户(root):也叫管理员账户,它的任务是对普通用户和整个系统进行管理。超级用户账户对系统具有绝对的控制权,能够对系统进行一切操作。

1.2 组

在Linux系统中,为了方便管理员管理和用户工作,产生了组的概念。

组群是具有相同特性的用户的逻辑集合,使用组群有利于系统管理员按照用户的特性组织和管理用户,提高工作效率。有了组群,在做资源授权时可以把权限赋予某个组群,组群中的成员即可自动获得这种权限。一个用户账户可以同时是多个组群的成员,其中某个组群是该用户的主组群(私有组群),其他组群为该用户的附属组群(标准组群)。

概 念 描 述
用户名 用来标识用户的名称,可以是字母、数字组成的字符串,区分大小写
密码 用于验证用户身份的特殊验证码
用户标识(UID) 用来表示用户的数字标识符
用户主目录 用户的私人目录,也是用户登录系统后默认所在的目录
登录shell 用户登录后默认使用的shell程序,默认为/bin/bash
组群 具有相同属性的用户属于同一个组群
组群标识(GID) 用来表示组群的数字标识符

注意:root用户的UID为:系统用户的UID从1到999;普通用户的UID可以在创建时由管理员指定,如果不指定,用户的UID默认从1 000开始顺序编号。在Linux系统中,创建用户账户的同时也会创建一个与用户同名的组群,该组群是用户的主组群。普通组群的GID默认也是从1 000开始编号。

2 用户账户文件

用户账户信息和组群信息分别存储在用户账户文件和组群文件中。

2.1 /etc/passwd文件

在Linux系统中,所创建的用户账户及其相关信息(密码除外)均放在/etc/passwd配置文件中。用vim编辑器(或者使用cat /etc/passwd)打开passwd文件,内容格式如下:

image.gif 编辑

文件中的每一行代表一个用户账户的资料,可以看到第一个用户是root。然后是一些标准账户,此类账户的shell为/sbin/nologin,代表无本地登录权限。

passwd文件的每一行用“:”分隔为7个域,各域的内容如下:

用户名:加密口令:UID:GID:用户的描述信息:主目录:命令解释器(登录shell)

passwd文件中的各字段的含义如下表所示,其中少数字段的内容是可以为空的,但仍需使用“:”进行占位来表示该字段。

字 段 说 明
用户名 用户账号名称,用户登录时所使用的用户名
加密口令 用户口令,考虑系统的安全性,现在已经不使用该字段保存口令,而用字母“x”来填充该字段,真正的密码保存在shadow文件中
UID 用户号,唯一表示某用户的数字标识
GID 用户所属的私有组号,该数字对应group文件中的GID
用户描述信息 可选的关于用户全名、用户电话等描述性信息
主目录 用户的宿主目录,用户成功登录后的默认目录
命令解释器 用户所使用的shell,默认为“/bin/bash”

2.2 /etc/shadow文件

由于所有用户对/etc/passwd文件均有读取权限,为了增强系统的安全性,用户经过加密之后的口令都存放在/etc/shadow文件中。/etc/shadow文件只对root用户可读,因而大大提高了系统的安全性。shadow文件的内容形式如下(cat /etc/shadow)

image.gif 编辑

shadow文件保存投影加密之后的口令以及与口令相关的一系列信息,每个用户的信息在shadow文件中占用一行,并且用“:”分隔为9个域,各域的含义如下表所示。

字 段 说 明
1 用户登录名
2 加密后的用户口令,*表示非登录用户,!!表示没设置密码
3 从1970年1月1日起,到用户最近一次口令被修改的天数
4 从1970年1月1日起,到用户可以更改密码的天数,即最短口令存活期
5 从1970年1月1日起,到用户必须更改密码的天数,即最长口令存活期
6 口令过期前几天提醒用户更改口令
7 口令过期后几天账户被禁用
8 口令被禁用的具体日期(相对日期,从1970年1月1日至禁用时的天数)
9 保留域,用于功能扩展

3 组群文件

组群账户的信息存放在/etc/group文件中,而关于组群管理的信息(组群口令、组群管理员等)则存放在/etc/gshadow文件中。

3.1 /etc/group文件

group文件位于“/etc”目录,用于存放用户的组账户信息,对于该文件的内容任何用户都可以读取。每个组群账户在group文件中占用一行,并且用“:”分隔为4个域。每一行各域的内容如下(使用cat /etc/group):

组群名称:组群口令(一般为空,用x占位):GID:组群成员列表

group文件的内容形式如下:

image.gif 编辑

可以看出,root的GID为0,没有其他组成员。group文件的组群成员列表中如果有多个用户账户属于同一个组群,则各成员之间以“,”分隔。在/etc/group文件中,用户的主组群并不把该用户作为成员列出,只有用户的附属组群才会把该用户作为成员列出。

3.2 /etc/gshadow文件

/etc/gshadow文件用于存放组群的加密口令、组管理员等信息,该文件只有root用户可以读取。每个组群账户在gshadow文件中占用一行,并以“:”分隔为4个域。每一行中各域的内容如下:

组群名称:加密后的组群口令(没有就用!):组群的管理员:组群成员列表

gshadow文件的内容形式如下:

image.gif 编辑

接下来我们进行用户的添加、以及群组的添加练习。

4 用户账户及组创建

用户账户管理包括新建用户、设置用户账户口令和用户账户维护等内容。

4.1 新建用户

在系统新建用户可以使用useradd或者adduser命令。useradd命令的格式是:

useradd [选项] <username>

useradd命令有很多选项,如下表所示。

选 项 说 明
-c comment 用户的注释性信息
-d home_dir 指定用户的主目录
-e expire_date 禁用账号的日期,格式为YYYY-MM-DD
-f inactive_days 设置账户过期多少天后用户账户被禁用。如果为0,账户过期后将立即被禁用;如果为-1,账户过期后,将不被禁用
-g initial_group 用户所属主组群的组群名称或者GID
-G group-list 用户所属的附属组群列表,多个组群之间用逗号分隔
-m 若用户主目录不存在则创建它
-M 不要创建用户主目录
-n 不要为用户创建用户私人组群
-p passwd 加密的口令
-r 创建UID小于500的不带主目录的系统账号
-s shell 指定用户的登录shell,默认为/bin/bash
-u UID 指定用户的UID,它必须是唯一的,且大于499

4.2 删除用户账户

要删除一个账户,可以直接删除/etc/passwd和/etc/shadow文件中要删除的用户所对应的行,或者用userdel命令删除。userdel命令的格式为

userdel [-r] 用户名

如果不加-r选项,userdel命令会在系统中所有与账户有关的文件中(例如/etc/passwd,/etc/shadow,/etc/group)将用户的信息全部删除。

如果加 -r 选项,则在删除用户账户的同时,还将用户主目录以及其下的所有文件和目录全部删除掉。另外,如果用户使用E-mail的话,同时也将/var/spool/mail目录下的用户文件删掉。

4.3 创建组

创建组群和删除组群的命令与创建、维护账户的命令相似。创建组群可以使用命令groupadd或者addgroup。

例如,创建一个新的组群,组群的名称为testgroup,可用以下命令:

groupadd testgroup

image.gif

4.4 删除组

要删除一个组可以用groupdel命令,例如删除刚创建的testgroup组时可用以下命令:

groupdel testgroup

image.gif


相关文章
|
6月前
|
存储 监控 安全
数据访问权限如何通过角色管理实现?
【6月更文挑战第24天】数据访问权限如何通过角色管理实现?
96 9
|
7月前
|
Linux
用户组管理命令
用户组管理命令。
27 1
|
7月前
|
存储 Linux 数据安全/隐私保护
Linux基本操作——用户操作——用户组操作
Linux基本操作——用户操作——用户组操作
65 0
|
7月前
|
Shell Linux 数据安全/隐私保护
用户,用户组相关操作
用户,用户组相关操作
63 0
|
中间件 数据安全/隐私保护
使用RoleBasedAuthorization实现基于用户角色的访问权限控制
本文将介绍如何通过 [Sang.AspNetCore.RoleBasedAuthorization](https://www.nuget.org/packages/Sang.AspNetCore.RoleBasedAuthorization) 库实现 RBAC 权限管理。
189 0
使用RoleBasedAuthorization实现基于用户角色的访问权限控制
|
Oracle 关系型数据库 数据安全/隐私保护
Orace用户创建及权限分配
Orace用户创建及权限分配
114 0
|
Shell Linux 数据安全/隐私保护
|
Shell 数据安全/隐私保护 Linux