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

账号和权限管理

目录

一、用户账号和的概述

(一)用户类别

(二)组账号

​编辑(三)UID号

​编辑(四)GID号

(五)配置文件

二、用户账号管理

(一)创建用户

1.不加选项

2.-u

3.-d

4.-e

5.-g

6.-G

7.-M

8.-s

(二)修改用户账号属性

1.-l

2.-L

3.-U

4.-u

(三)密码管理

(四)删除用户

(五)用户账号的初始配置文件

三、组账号管理

(一)创建组

(二)添加、设置、删除组成员

(三)删除组

(四)查看命令

1.命令之----w

2.命令之-----who

3.命令之-----user

4.命令之-----finger

四、文件/目录的权限

(一)权限的分类

1.对文件的权限

2.对目录的权限

3.访问用户的分类

(二)修改权限

1.模式法

2.八进制数字法

3.修改属主、组

4.特殊权限

5.umask

6.acl访问控制列表


一、用户账号和的概述

用户一般来说是指使用计算机的人,计算机对使用其每一个用户给了一个特定的名称,用户就可以使用这些名称来登录使用计算机,除了人之外,一些系统服务也需要含有部分特权的用户账户运行;因此,出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root在计算机中拥有至高权限,所以一般只做管理用,非特权用户可以通过SU或SUDO程序来临时获得特权

Linux中通过用户和用户组实现访问-----包括对文件访问、设备使用的控制

个人可以拥有很多账户,只是名称不同,比如root已经占用就不能再次使用,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获取改组的特权

Linux系统中,每一个文件都有属一个用户(属主)和一个用户组(属组)。另外还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组而设置相应的访问权限。

我们可以使用ls或者stat命令查看该文件的权限

(一)用户类别

在Linux中,用户的类别一般分为一下三种

(二)组账号

用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建

用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组

附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定

一对一:一个用户可以存在一个组中

一对多:一个用户可以存在多个组中

多对一:多个用户可以存在一个组中

多对多:多个用户可以存在多个组中

(三)UID号

UID(User IDentity ):用户标识号,Linux中每个用户都有一个以数字为表达方式的身份标记,类似于每个人的身份证号

(四)GID号

GID(Group IDentify):组标识号。与UID号相似,每一个组也有自己的标识

(五)配置文件

名称帐号信息说明
用户配置文件/etc/passwd

记录了每个用户的基本属性,并且对所有用户

可读每一行记录对应一个用户,每行记录使用

冒号进行分割

用户组文件/etc/group用户组的所有信息存放地,并且组名不能重复
用户对应的密码信息/etc/shadow

因为passwd是对所有用户可读的,为了安全起见把密码从passwd里分离出来放入单独的文件,该文件只有root用户

有读权限,从而保证密码的安全性

1.用户配置文件

打开/etc/passwd

各字段代表的含义

打开/etc/group

打开/etc/shadow

kysw:$6$2YaZfC2f$RJctv3I765WZvyMXDUDEy.1cYBadOqLuIAp7ZALl3m.0TLjKhgSYwaYvhd8jHkYgPfRwT1GW.SsLG0aquobfb0:19717:0:99999:7:::

知识扩展:第三段字符从1970-01-01日开始算起,这个日子是UNIX诞生的日子,实际上在1969年Unix就已经诞生,正式公布为1970年1月1日,当时有个“千年虫”事件。Unix的作者也没有想到它会存在这么长的时间,所以当时出现了一个BUG,当时间到2000年时系统无法识别,就会从1900年重新开始计算

二、用户账号管理

(一)创建用户

命令-------useradd 

语法:useradd 【选项】...  用户名

作用:添加新用户,并对新用户进行个性化设置

选项:

-u指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g指定用户的基本组名(或使用 GID 号)。
-G指定用户的附加组名(或使用 GID 号)。
-M不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
-s指定用户的登录 Shell /sbin/nologin

1.不加选项

无特殊情况,按顺序依次生成UID号与组ID号

useradd  lida

2.-u

指定UID号

3.-d

指定用户的宿主目录位置(当与-M 一起使用时,不生效)

两台不同的机器创建的用户,为了给大家演示方便,不用太纠结

4.-e

指定用户失效时间

5.-g

指定用户的基本组名(或使用 GID 号)

6.-G

指定用户的附加组名(或使用 GID 号)

7.-M

不建立宿主目录不建立宿主目录

8.-s

指定用户的登录 Shell 

(二)修改用户账号属性

命令之----------usermod

语法:usermod  【选项】...  用户名

作用:对已经创建的用户属性进行修改

选项:

-l:更改用户账号的登录名称(Login Name)

-L:锁定用户账户

-u: 修改用户的 UID 号

-U:解锁锁用户账户

-d:修改用户的宿主目录位置。

-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。

-g:修改用户的基本组名(或使用 GID 号)

-G:修改用户的附加组名(或使用 GID 号)

-s:指定用户的登录 Shell

1.-l

更改用户账号的登录名称

2.-L

锁定用户账户,锁定后账户就无法登录了

3.-U

解锁锁用户账户

4.-u

修改用户的 UID 号

(三)密码管理

命令之------passwd

语法:passwd [选项]... 用户名   不加用户名默认为当前用户修改密码

作用:为用户账号设置密码

选项:

不加选项:passwd  用户名

-d:清空指定用户的密码,仅使用用户名即可登录系统。

-l:锁定用户账户。

-S:查看用户账户的状态(是否被锁定)。

-u:解锁用户账户。

其它选项与useradd基本一致,在此不再过多演示

(四)删除用户

命令之--------userdel

userdel  【选项】 用户

不加条件的话,用户删除后,该用户的家目录还会存在

-r 将用户家目录一起删除

(五)用户账号的初始配置文件

用户宿主目录下的初始配置文件只对当前用户有效

~/ .bash_profile

#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件

~/.bashrc

#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)

~/.bash_logout

#此文件中的命令将在该用户每次退出时bash shell时使用

/etc/bashrc

三、组账号管理

(一)创建组

命令之------groupadd

语法:groupadd  【选项】 组名

作用:创建新的用户组,并设置个性化属性

groupadd  【-g GID号】  组账号名

[root@localhost ~]#groupadd ky1[root@localhost ~]#tail -1 /etc/group
ky1:x:2004:[root@localhost ~]#groupadd -g 2500 ky2
[root@localhost ~]#tail -2 /etc/group
ky1:x:2004:
ky2:x:2500:#不加 -g  会根据前一个创建用户GID号依次生成
#加上 -g  后可以自定义GID号

(二)添加、设置、删除组成员

命令之------gpasswd

语法:gpasswd  【选项】  用户名  组名

作用:对组成员进行操作

选项:

-a:向组内添加一个用户

-d:从组内删除一个用户成员

-M:定义组成员列表,以逗号分隔

 

(三)删除组

groupdel 组帐号名

(四)查看命令

1.命令之----w

查询已登录到主机的用户信息

标题含义
USER登录到系统的用户。
TTY登录终端。
FROM表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
LOGIN@用户登陆的日期和时间。
IDLE表示某个程序上次从终端开始执行到现在所持续的时间。
JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
PCPU当前进程所占用的 CPU 运算时间。
WHAT当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。

2.命令之-----who

相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下:

3.命令之-----user

显示当前登录到系统的用户列表

4.命令之-----finger

此命令需要手动安装 ,它可以查看到用户的详细信息

四、文件/目录的权限

在Unix/Linux系统中,文件和目录都有各自的权限设置,这些权限决定了哪些用户或用户组可以

文件或目录进行操作

(一)权限的分类

1.对文件的权限

①读取(r):可使用文件查看类工具,比如:cat,可以获取其内容

②写入(w):可修改其内容

③执行(x):可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

2.对目录的权限

:可以使用ls查看此目录中文件列表

w :可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关

x :可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

3.访问用户的分类

文件和目录的权限通常通过一组九个字符来表示,格式如下:

这九个字符分为三组,每组三个,分别代表所有者(user)、所属组(group)和其他用户(others)的权限。

(二)修改权限

命令之----chmod

语法 :chmod   【选项】  文件名

作用:修改文件/目录对特定用户的权限

选项:

1.模式法

+  是加上,在原有的基础上加上权限

-  是在原有的基础上减去权限

=  赋予 就是原有权限不看 等于号后面的权限

2.八进制数字法

权限使用三位八进制数来表示所有者、所属组和其他用户的权限。每一位数字的范围是0-7,分别对应以下权限组合:

0:无权限

1:执行权限

2:写入权限

3:写入和执行权限

4:读取权限          

5:读取和执行权限

6:读取和写入权限

7:读取、写入和执行权限

在Linux显示为   r=4、w=2、x=1

例如:        

使用chmod修改权限后

3.修改属主、组

命令之-----chown

语法:chown  用户:组名  文件名

作用:修改文件/目录的所属住和所属组

只修改所属主 :输入 chown  属主名  文件名

只修改所属组:输入 chown  .属组名  文件名

同时修改:输入 chown  属主名:属组名  文件名

4.特殊权限

除了基本的读、写、执行权限外,还有一些特殊的权限位:

s(setuid/setgid)

当设置在可执行文件上时,允许以文件所有者的身份(setuid)或文件所属组的身份(setgid)运行该文件。

此处s表示当使用这个命令程序时,把当前用户当成文件的所属主

修改密码就是修改/etc/shadow文件内容

正常来说,作为普通用户,我们是没有权限去修改的,但是passwd命令加上了suid这个特殊权限,就可以将使用该命令的用户作为修改文件的所属主,无视权限

添加命令为: chown  s(g)+s  文件名

t(粘滞位/sticky bit)

当设置在目录上时,仅允许文件所有者删除该目录下的文件,即使其他用户具有写入权限。

输入chmod  o+t  文件名

其它用户虽然有权限,但是无法删除

只有该文件的属主可以删除

5.umask

umask 的值可以用来保留在创建文件权限

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变  因为为了安全考虑,默认是将x(执行)权限去掉  (x=1)

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

root的umask 默认是 022

6.acl访问控制列表

可以实现单个用户的权限设置,

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } 文件名....

-m,       --modify-acl 更改文件的访问控制列表

-M,       --modify-file=file 从文件读取访问控制列表条目更改

-x,       --remove=acl 根据文件中访问控制列表移除条目

-X,       --remove-file=file 从文件读取访问控制列表条目并删除

-b,       --remove-all 删除所有扩展访问控制列表条目

-k,       --remove-default 移除默认访问控制列表
          --set=acl 设定替换当前的文件访问控制列表
          --set-file=file 从文件中读取访问控制列表条目设定
          --mask 重新计算有效权限掩码

-n,       --no-mask 不重新计算有效权限掩码

-d,       --default 应用到默认访问控制列表的操作

-R,       --recursive 递归操作子目录

-L,       --logical 依照系统逻辑,跟随符号链接

-P,       --physical 依照自然逻辑,不跟随符号链接
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
          --test 测试模式,并不真正修改访问控制列表属性

-v,       --version           显示版本并退出

-h,       --help              显示本帮助信息

举个例子

总结:通过用户和组的管理,可以对不同的用户进行不同的权限设置

相关文章:

账号和权限管理

目录 一、用户账号和的概述 (一)用户类别 (二)组账号 ​编辑(三)UID号 ​编辑(四)GID号 (五)配置文件 二、用户账号管理 (一)…...

前端---表单标签

1. 表单的介绍 表单用于搜集不同类型的用户输入(用户输入的数据)&#xff0c;然后可以把用户数据提交到web服务器 。 2. 表单相关标签的使用 <form>标签 表示表单标签&#xff0c;定义整体的表单区域 <label>标签 表示表单元素的文字标注标签&#xff0c;定义文字…...

Matplotlib 绘制基本的图表

# 导入包 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] # 用来显示中文 plt.rcParams[axes.unicode_minus] False # 显示负坐标轴# 读取源数据&#xff0c;后续大部分数据基于词文件的数据&#xff0c;需…...

【JavaScript】异步解决方案的发展历程

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…...

前端性能优化三十四:花裤衩模板引入打包分析工具

测量各个插件和loader所花费的时间 (1). install: yarn add speed-measure-webpack-plugin -D(2). Vue-cli 3.x设置: const SpeedMeasurePlugin require(speed-measure-webpack-plugin) const smp new SpeedMeasurePlugin({outputFormat: human }) // 包裹configureWebpac…...

求职小程序列表基础配置-移动端通用列表模块配置教程(1)

求职小程序列表基础配置-移动端通用列表模块配置教程(1) 移动端通用列表页开发指南 准备工作 注册多八多AIIDE账号: 访问多八多AIIDE官网并注册新账号。完成邮箱和手机号的验证。 创建移动应用: 登录后&#xff0c;在工作台新建一个移动应用。填写应用名称&#xff0c;选择“…...

牛客设计模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…...

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站&#xff0c;并且会附上使用文档以及一些特性和二次构建的方法&#xff0c;那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址&#xff1a;官网、Github。 这里需要声明一下&#xff…...

MySQL递归公用表表达式

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;MySQL知识 &…...

深入 K8s 网络原理(一)- Flannel VXLAN 模式分析

1. 概述 这周集中聊下 K8s 的集群网络原理&#xff0c;我初步考虑分成3个方向&#xff1a; Pod-to-Pod 通信&#xff08;同节点 or 跨节点&#xff09;&#xff0c;以 Flannel VXLAN 模式为例&#xff1b; Pod/External-to-Service 通信&#xff0c;以 iptables 实现为例&…...

fpga 8段4位数码管verilator模拟

8段4位数码管verilator模拟 seg.v module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL );reg[7:0] digit[0:15] {8h3f, 8h06, 8h5b, 8h4f, 8h66, 8h6d, 8h7d,8h07,8h7f,8h6f, 8h77, 8h7c, 8h39, 8h5e, 8h79, 8h71};reg[31:0] cnt 32…...

HttpURLConnection发送各种内容格式

通过java.net.HttpURLConnection类实现http post发送Content-Type为multipart/form-data的请求。 json处理使用com.fasterxml.jackson 图片压缩使用net.coobird.thumbnailator log使用org.slf4j 一些静态变量 private static final Charset charset StandardCharsets.UTF_8;…...

摇杆控制人物移动

摇杆控制人物移动 一、UI搭建二、3d模型搭建三、脚本JoyStickBar.csPlayerController.cs 工程在我资源里名字叫Joystickbar.unitypackage [连接](https://download.csdn.net/download/qq_42194657/12043019?spm1001.2014.3001.5503) 一、UI搭建 JoyStickBar是图片背景 JoySt…...

Jenkins自动化部署之后端

准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数&#xff1a;分支名称 多选框&#xff1a;项目名称&#xff08;Extended Choice Parameter插件必备&#xff0c;插件安装参考我另外的文章&#xff09; 这个分割规则自定义。只要根据Jenkins…...

Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.

1、首先进入阿里云maven仓库&#xff0c;在搜索栏输入无法下载的依赖名称&#xff0c;查询现有版本号&#xff0c;可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库&#xff1a; maven { url https://www.jitpack.io } maven { u…...

RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明

文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…...

15个主流设计灵感网站,激发你的创作灵感!

即时设计 即时设计是一种强大的云设计工具&#xff0c;已成为许多设计师、产品经理和开发人员的首选工具之一。即时设计用户可以使用内置的工具和功能快速创建和编辑设计&#xff0c;或与其他用户共享和合作。此外&#xff0c;即时设计还有一个丰富的资源社区&#xff0c;为用…...

Matlab:解非线性方程组

1、基于问题求解非线性方程组 例&#xff1a; xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…...

面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行

一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕&#xff0c;2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头&#xff0c;今年亚马逊云科技可以说全面加码 AI&#xff0c;例如发布完整的端到端生成式 AI 技…...

【JDK新特性】JDK和Springboot各版本新特性介绍

目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍&#xff1a; JDK 8&#xff1a; Lambda 表达式&#xff1a;引入了函数式编程的概念&#xff0c;使得代码更简洁、可读性更强。Stream API&#xff1a;提供了一种高效处理集合数据的方式&#xff0c;支持并行处理。默认…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...