操作系统核心问题与保护机制解析

内容分享2小时前发布
0 0 0

table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}

1、操作系统的三个主要目的是什么?

作为计算机用户与计算机硬件之间的中介,提供一个用户可以方便高效地执行程序的环境;

管理计算机硬件,确保计算机系统正确运行,并防止用户程序干扰系统正常运行;

管理内存和存储空间,保护和保障操作系统及用户安全。

2、我们强调操作系统需要有效利用计算硬件。在什么情况下操作系统适合放弃这一原则而“浪费”资源?为什么这样的系统实际上并不浪费?

当操作系统主要为单用户体验设计时,适合放弃高效利用资源原则而“浪费”资源。因为这种系统主要注重易用性,优化单用户体验,虽未着重资源利用率,但满足了用户操作便捷的需求,对用户而言并非资源浪费。

3、考虑到操作系统的各种定义,思考操作系统是否应包含诸如网页浏览器和邮件程序等应用程序。分别论证应该和不应该包含,并给出支持理由。

操作系统是否应包含网页浏览器和邮件程序的讨论

应该包含的理由

操作系统的目的是为用户提供一个方便高效执行程序的环境。

网页浏览器和邮件程序等应用是用户日常使用计算机时常用的工具。

将它们包含在操作系统中可以让用户更方便地使用计算机,减少额外安装软件的步骤,提高使用的便捷性。

不应该包含的理由

操作系统的核心功能是管理计算机硬件和为应用程序提供基础。

网页浏览器和邮件程序等属于应用程序范畴。

将它们包含在操作系统中会增加操作系统的复杂性,不利于系统的设计、实现和维护。

不同用户对这些应用的需求和偏好不同,将其作为独立应用可以让用户根据自己的需求选择安装,使系统更加灵活。

4、内核模式和用户模式的区别是如何作为一种基本的保护(安全)系统发挥作用的?

特权指令与模式保护机制

通过将一些可能造成危害的机器指令指定为

特权指令

,硬件仅允许在

内核模式

下执行这些特权指令。若在

用户模式

下尝试执行特权指令,硬件

不会执行该指令

,而是将其视为

非法指令



陷入操作系统

,以此保护操作系统免受错误用户的影响,也保护错误用户之间互不干扰。

5、请说明缓存有用的两个原因。它们解决了哪些问题?又会引发哪些问题?如果缓存可以做得和它所缓存的设备一样大(例如,一个和磁盘一样大的缓存),为什么不把它做得那么大并淘汰该设备呢?

缓存的作用与影响

有用的两个原因:


提高数据访问速度


当需要数据时,先从缓存中查找,若有则可直接使用,无需从较慢的数据源获取。


减少CPU等待时间


如指令缓存可避免CPU从主存取指令时等待多个周期。

解决的问题:

提高系统性能

减少数据访问延迟

引发的问题:

缓存容量有限

需要进行缓存管理,包括选择合适的大小和替换策略

不把缓存做得和设备一样大并淘汰设备的原因:

缓存成本高,做大成本难以承受

即使缓存和设备一样大,也需要设备来持久存储数据,以防数据丢失

6、区分分布式系统的客户端 – 服务器模型和对等模型。

在客户端 – 服务器模型中,客户端和服务器有明确区分,服务器是系统瓶颈。而在对等模型中,系统内所有节点都是对等的,每个节点可根据需求作为客户端请求服务或作为服务器提供服务,服务可由网络中多个节点提供。

7、资源利用问题在不同类型的操作系统中以不同形式出现。列出在以下环境中必须谨慎管理的资源:a. 大型机或小型计算机系统;b. 连接到服务器的工作站;c. 移动计算机。

a. 大型机或小型计算机系统需管理的资源有 CPU 时间、内存、I/O 设备等,确保所有可用的 CPU 时间、内存和 I/O 被高效使用,且无单个用户占用超过公平份额。

b. 连接到服务器的工作站需管理的资源包括工作站的专用资源,以及共享资源如网络、文件服务器、计算服务器和打印服务器等。

c. 移动计算机需管理的资源有电池电量、内存、存储、网络连接等,以优化单用户体验。

8、描述对称多处理和非对称多处理的区别。多处理器系统的三个优点和一个缺点是什么?

对称多处理与非对称多处理的区别

区别

非对称多处理

每个处理器被分配特定任务。

有一个主处理器控制整个系统。

其他处理器听从主处理器指令或执行预定义任务。

存在主-从关系。

对称多处理

每个处理器执行所有任务,包括操作系统功能和用户进程。

所有处理器地位平等。

不存在主-从关系。

多处理器系统的三个优点

1. 提高吞吐量

增加处理器数量可在更短时间内完成更多工作。

但由于协作任务时的开销和共享资源的竞争,加速比小于处理器数量。

2. 规模经济

多处理器系统成本低于多个等效单处理器系统。

因为它们可共享外设、大容量存储和电源。

3. 提高可靠性

若功能能在多个处理器间合理分配,一个处理器故障不会使系统停止,只会使其变慢。

多处理器系统的一个缺点

以对称多处理系统为例,由于CPU相互独立,可能出现一个CPU闲置而另一个过载的情况,导致效率低下。

9、集群系统与多处理器系统有何不同?属于一个集群的两台机器要合作提供高可用性服务需要什么条件?

集群系统与多处理器系统的不同在于:


集群系统

由两个或多个单独的系统(节点)连接在一起组成。

是松耦合的。

属于一个集群的两台机器要合作提供高可用性服务,需要:

共享存储。

通过局域网(LAN)或更快的互连(如 Infiniband)紧密连接。

运行一层集群软件。

每台节点可以通过局域网监控其他节点。

当被监控的机器出现故障时,监控机器可以接管其存储并重启在故障机器上运行的应用程序。


多处理器系统

是多个处理器紧密通信。

共享计算机总线。

有时还共享时钟、内存和外围设备。

10、直接内存访问(DMA)用于高速I/O设备,以避免增加CPU的执行负载。a. CPU如何与设备接口以协调数据传输?b. CPU如何知道内存操作何时完成?c. 当DMA控制器传输数据时,CPU可以执行其他程序。这个过程会干扰用户程序的执行吗?如果会,请描述会造成哪些形式的干扰。

a. CPU通过DMA控制器与设备接口来协调数据传输。设备控制器在有数据可传输时,在DMA请求线上发出信号,DMA控制器收到信号后,夺取内存总线,在内存地址线上放置所需地址,并在DMA确认线上发出信号。设备控制器收到DMA确认信号后,将数据传输到内存并移除DMA请求信号。

b. 当整个传输完成后,DMA控制器会中断CPU,以此告知CPU内存操作已完成。

c. 当DMA控制器夺取内存总线时,CPU会暂时无法访问主内存,不过仍可访问其一、二级缓存中的数据。这种周期窃取会减慢CPU的计算速度,对用户程序的执行产生干扰,主要干扰形式是由于CPU暂时无法访问主内存,导致依赖主内存数据的用户程序执行速度下降。

11、考虑一个对称多处理(SMP)系统。举例说明内存中的数据实际上如何在每个本地缓存中具有不同的值。

数据一致性问题描述

假设整数A位于文件B中,文件B存于硬盘。要对A执行加1操作,首先进行I/O操作将A所在的磁盘块复制到主内存,接着将A复制到缓存和内部寄存器。这样A的副本出现在硬盘、主内存、缓存和内部寄存器中。

在SMP系统里,每个CPU都有本地缓存。若CPU 1将其本地缓存中A的值加1,而CPU 2还未及时更新其本地缓存,此时A在CPU 1和CPU 2的本地缓存中的值就不同了。

12、与客户端 – 服务器系统相比,对等网络系统有哪些优势?

在客户端 – 服务器系统中,服务器是瓶颈;但在对等网络系统中,服务可以由分布在整个网络中的多个节点提供。

13、描述一些适合点对点(对等)系统的分布式应用。

适合点对点系统的分布式应用包括:

文件共享服务(如

Napster



Gnutella

),允许对等节点之间交换文件;


Skype

,它允许客户端通过互联网进行语音通话、视频通话和发送文本消息,采用了混合对等方法,包含集中式登录服务器,也有分散的对等节点,并允许两个对等节点通信。

14、指出开源操作系统的几个优点和几个缺点。说明哪些人会认为每个方面是优点或缺点。

优缺点分析

优点


社区支持

:有一群感兴趣(通常无报酬)的程序员社区,他们帮助调试、分析代码、提供支持和建议更改,对于开发者和学习者来说,可获取更多帮助和建议。


安全性更高

:因有更多人查看代码,能更快发现和修复漏洞,对于注重系统安全的用户和企业是优势。


学习资源

:学生可通过修改和运行源代码学习操作系统,对学生是很好的学习工具。


职业发展

:方便从学生转变为操作系统开发者,学生可创建新的操作系统发行版。


知识积累

:历史项目的源代码可帮助学生理解项目和积累知识,利于新的项目实施。


相互借鉴

:不同开源操作系统可相互借鉴,促进操作系统项目快速改进。

缺点


商业顾虑

:公司可能因担心代码和创意被竞争对手获取,以及版权保护问题,不愿开源代码,对于依赖软件销售盈利的商业公司是顾虑。


法律问题

:开源代码可能存在版权保护和数字版权管理(DRM)方面的问题,违反相关法律,对于需要严格版权保护的内容提供商不利。

15、系统调用的目的是什么?

系统调用提供了一个访问操作系统所提供服务的接口。

16、操作系统在内存管理方面的三大主要活动是什么?

跟踪当前哪些内存部分正在被使用以及是谁在使用它们;

决定哪些进程(或进程的哪些部分)和数据要移入和移出内存;

根据需要分配和释放内存空间。

17、操作系统在二级存储管理方面的三大主要活动是什么?

操作系统在二级存储管理方面的三大主要活动是:空闲空间管理、存储分配和磁盘调度。

18、命令解释器的目的是什么?为什么它通常与内核分开?

命令解释器的主要功能

命令解释器的主要功能是获取并执行用户指定的下一个命令。

许多操作系统将命令解释器作为一个特殊程序,与内核分开,像 Windows 和 UNIX 系统,在作业启动或用户登录时运行。

这样做的目的是为了提高系统的灵活性和可维护性。用户可以根据个人喜好选择不同的命令解释器(如 UNIX 和 Linux 系统有多种 shell 可供选择),且不同的命令解释器实现方式也可不同。分开处理便于更新和修改命令解释器,而不影响内核。

19、为了启动一个新进程,命令解释器或 shell 必须执行哪些系统调用?

需要执行

fork()

系统调用创建新进程,再通过

exec()

系统调用将选定的程序加载到内存并执行。

20、系统程序的目的是什么?

系统程序,也称为系统实用程序,为程序开发和执行提供了一个便捷的环境。

21、系统设计的分层方法的主要优点是什么?分层方法的缺点是什么?

主要优缺点

主要优点

构建和调试简单

分层设计使得每层仅使用下层的功能和服务,简化了调试和系统验证

调试某一层时,若发现错误,该错误必然在本层,因为下层已调试完毕

简化了系统的设计和实现

每层对上层隐藏了某些数据结构、操作和硬件的存在

主要缺点

难以恰当地定义各个层

由于一层只能使用下层,因此需要精心规划

22、列出操作系统提供的五项服务,并解释每项服务如何为用户带来便利。在哪些情况下,用户级程序无法提供这些服务?请解释你的答案。

操作系统提供的五项服务及便利之处


用户界面


提供命令行、批处理、图形用户界面等多种方式,方便用户与系统交互。


程序执行


可将程序加载到内存并运行,能正常或异常结束程序,便于用户使用各类程序。


I/O操作


运行程序时可进行文件或设备的I/O操作,用户无需直接控制I/O设备。


文件系统操作


程序能读写、创建、删除文件和目录,还能进行权限管理,方便用户管理文件。


资源分配


合理分配系统资源,让多个程序能高效运行。


用户级程序无法提供这些服务的情况及原因


I/O操作和资源分配


用户级程序通常不能直接访问硬件设备,也无法对系统资源进行全局管理和分配。


用户界面的批处理接口


需要系统级支持来执行批处理文件。


程序执行


涉及系统对内存等资源的管理和调度,用户级程序难以完成。


文件系统操作中的权限管理


需要系统级控制来确保安全性和一致性。

23、为什么机制和策略的分离是可取的?

机制和策略的分离对于灵活性很重要。策略可能会因地点或时间而改变,若不分离,每次策略改变都可能需要改变底层机制;而通用的、不受策略变化影响的机制更可取,策略改变时只需重新定义系统的某些参数。

24、微内核方法进行系统设计的主要优点是什么?在微内核架构中,用户程序和系统服务如何交互?使用微内核方法有哪些缺点?

微内核方法进行系统设计的主要优点包括:

便于扩展操作系统,所有新服务添加到用户空间,无需修改内核;

修改内核时改动较少,因为微内核较小;

操作系统更易于从一种硬件设计移植到另一种;

提供更高的安全性和可靠性,因为大多数服务作为用户进程而非内核进程运行,若某个服务失败,操作系统其余部分不受影响。

在微内核架构中,用户程序和系统服务不直接交互,而是通过与微内核交换消息进行间接通信。


缺点:


使用微内核方法的缺点是性能可能会因系统功能开销增加而受影响。

25、使用可加载内核模块有哪些优点?

使用可加载内核模块的优点包括:

开发新驱动时无需重新编译、链接和加载整个内核,可单独编译驱动并加载到已运行的内核中进行测试;

新驱动编写完成后可作为模块分发,其他用户无需重建内核即可受益;

内核模块接口允许第三方按自己的条款编写和分发无法以GPL许可分发的设备驱动或文件系统;

可使用标准的最小内核设置Linux系统,用户所需的任何设备驱动可以在启动时显式加载,或按需自动加载,不用时卸载。

26、iOS和Android有哪些相似之处?又有哪些不同之处?

相似之处与不同之处


相似之处:


二者都是分层的软件栈,为开发移动应用提供了丰富的框架。


不同之处:


– iOS专为苹果移动设备设计,是闭源系统;

– 而Android可运行在多种移动平台上,是开源系统。

此外,iOS的核心操作系统基于特定内核环境,Android软件栈底层是经谷歌修改过的Linux内核,且不在Linux正常发行版范围内。

27、解释为什么运行在安卓系统上的Java程序不使用标准Java API和虚拟机。

谷歌为安卓系统的 Java 开发设计了单独的安卓 API。

Dalvik 虚拟机专为安卓设计,针对内存和 CPU 处理能力有限的移动设备进行了优化,因此安卓系统上的 Java 程序不使用标准 Java API 和虚拟机。

28、解释open()和close()操作的目的。

文件操作目的说明

open()操作的目的

避免每次文件操作都搜索目录,通过将目录项复制到打开文件表,后续操作使用表中的索引,无需再次搜索;

检查文件访问模式与权限是否匹配,若允许则为进程打开文件;

返回打开文件表中条目的指针,用于后续I/O操作,简化系统调用接口。

close()操作的目的

当文件不再被积极使用时,进程调用close(),操作系统将其从打开文件表中移除条目,同时减少文件的打开计数,当打开计数为0时,表明文件不再被使用。

29、在某些系统中,授权用户可以像读写普通文件一样读写子目录。a. 描述可能出现的保护问题。b. 提出解决这些保护问题的方案。


a. 可能出现的保护问题包括:

1. 目录权限管理复杂,易出现权限误设,如给予用户过高权限,导致其可随意删除或修改目录结构和文件。
2. 若目录被非法修改,可能破坏文件系统的组织结构,使文件难以查找和访问。
3. 多用户共享目录时,可能因权限冲突,如不同用户同时修改同一目录,造成数据不一致。
4. 若目录权限设置不当,可能泄露敏感文件信息。

b. 解决这些问题的方案如下:

1. 采用精细的权限控制机制,如 UNIX 系统的 rwx 权限位,分别对目录的读、写和执行权限进行设置。
2. 实施访问控制列表 (ACL),详细列出每个用户或用户组对目录的访问权限。
3. 进行用户认证和授权,确保只有授权用户能访问目录。
4. 定期审计目录访问记录,及时发现和处理异常访问行为。
5. 对重要目录进行备份,以便在目录被破坏时能恢复。

30、打开文件表用于维护当前打开文件的信息。操作系统应该为每个用户维护一个单独的表,还是只维护一个包含所有用户当前正在访问的文件引用的表?如果同一个文件被两个不同的程序或用户访问,打开文件表中是否应该有单独的条目?请解释。

多进程环境下文件打开机制

在多进程同时打开文件的环境中,操作系统通常使用两级内部表:


每个进程的表

跟踪该进程打开的所有文件

存储进程使用文件的相关信息

当前文件指针

对文件的访问权限

会计信息等


系统级表

每个进程表中的条目指向系统级打开文件表

包含与进程无关的信息

文件在磁盘上的位置

访问日期

文件大小等

工作原理

当一个文件被一个进程打开后:

系统级表会为该文件添加一个条目

当另一个进程执行打开操作时:

只需在该进程的打开文件表中添加一个新条目

指向系统级表中的相应条目

特点

操作系统既维护了每个用户(进程)的表,也维护了系统级表

如果同一个文件被两个不同的程序或用户访问:

在每个进程的打开文件表中会有单独的条目

但这些条目会指向系统级打开文件表中的同一个条目

管理机制

系统级打开文件表通常还有一个打开计数

用于指示有多少进程打开了该文件

每次关闭文件时,打开计数会减少

当打开计数达到零时:

文件不再被使用

其条目会从打开文件表中移除

31、说明将功能置于设备控制器而非内核的三个优点和三个缺点。

优缺点分析


优点:


– 可获得最高性能

– 减轻内核负担

– 实现特定功能的硬件加速


缺点:


– 进一步改进或修复错误困难且昂贵

– 开发时间长

– 灵活性降低

32、区分STREAMS驱动程序和STREAMS模块。


STREAMS驱动程序控制设备,是设备驱动与用户级进程全双工连接的一部分,包括与用户进程交互的流头和控制设备的驱动端;STREAMS模块提供STREAMS处理功能,可通过`ioctl()`系统调用添加到流中,位于流头和驱动端之间。

33、能力列表和访问列表的主要区别是什么?

访问列表直接对应用户需求,用户创建对象时可指定哪些域能访问该对象以及允许的操作,但特定域的访问权限信息不集中,确定每个域的访问权限集较困难,且每次访问对象都需搜索访问列表,在大型系统中搜索耗时。

能力列表不直接对应用户需求,但有助于为给定进程集中信息,尝试访问的进程需出示能力,保护系统只需验证能力是否有效,但撤销能力可能效率不高。

34、宝来公司(Burroughs)的B7000/B6000 MCP文件可以被标记为敏感数据。当此类文件被删除时,其存储区域会被一些随机位覆盖。这样的方案有什么用途?

该方案的用途是防止敏感数据被恢复。当文件被删除后,如果不覆盖存储区域,数据可能会被恢复软件等工具恢复,从而导致敏感信息泄露。用随机位覆盖存储区域,能有效破坏原有的敏感数据,降低数据被恢复和泄露的风险。

35、包括RC 4000系统在内,定义了一个进程树,使得一个进程的所有后代只能由其祖先赋予资源(对象)和访问权限。因此,后代永远不能做其祖先不能做的任何事情。树的根是操作系统,它可以做任何事情。假设访问权限集由一个访问矩阵A表示。A(x,y)定义了进程x对对象y的访问权限。如果x是z的后代,对于任意对象y,A(x,y)和A(z,y)之间有什么关系?

由于后代x不能做其祖先z不能做的事,所以对于任意对象y,A(x,y)是A(z,y)的子集,即A(x,y) ⊆ A(z,y)。

36、能力列表通常保存在用户的地址空间内。系统如何确保用户无法修改列表的内容?

系统通过以下两种方式确保用户无法修改能力列表内容:

为每个对象设置标签以表明其是能力还是可访问数据,且标签不能被应用程序直接访问,可借助硬件或固件支持来实施这一限制;

将与程序关联的地址空间划分为两部分,一部分供程序访问,包含程序的常规数据和指令,另一部分包含能力列表,仅由操作系统访问,可利用分段内存空间来支持该方法。

37、访问控制矩阵可用于确定一个进程是否可以从域A切换到域B并享有域B的访问权限。这种方法是否等同于将域B的访问权限包含在域A的访问权限中?

否,进程从域A切换到域B需满足

access(A, B)

包含switch权限,且切换后按域B对应行的访问矩阵条目访问对象,并非将域B权限直接包含在域A中。

38、考虑一个计算机系统,在该系统中,学生只能在晚上10点到早上6点玩电脑游戏,教职工只能在下午5点到早上8点玩,计算机中心工作人员可以随时玩。请提出一个能有效实施此策略的方案。

策略与机制分离的实施方案

原则

可采用

策略与机制分离

的原则来实施该方案。

机制部分

在操作系统中实现一个

用户身份验证和时间检查模块

,该模块负责以下功能:

识别登录用户的身份:

学生

教职工

计算机中心工作人员

获取当前时间

策略部分

设置不同的时间规则,具体如下:

身份类别 可玩游戏时间范围
学生 晚上10点 – 早上6点
教职工 下午5点 – 早上8点
计算机中心工作人员 可随时玩

执行流程

当用户尝试启动游戏程序时,操作系统将执行以下步骤:


调用验证模块


验证用户身份


检查当前时间是否符合该身份的时间规则

结果处理

若符合规则:

允许游戏程序运行

若不符合规则:

拒绝运行游戏程序

给出相应提示

优势说明

采用此方式后:

当时间规则或允许玩游戏的身份群体发生变化时


只需更改策略部分的规则设置


无需修改底层的验证和检查机制

39、描述如果允许 Java 程序直接更改其栈帧的注释,Java 保护模型将如何受到损害。

如果 Java 程序能直接更改其栈帧的注释,栈检查机制将失效。因为栈检查依赖于栈帧注释来判断是否允许对受保护资源的访问请求。程序可能会伪造

doPrivileged

注释,使不被允许的访问请求通过检查,从而绕过访问控制,导致 Java 保护模型中基于类的保护域和权限的访问限制无法有效执行,使系统面临安全风险,如恶意程序可能会访问受保护的硬件或软件资源。

40、最小特权原则如何有助于创建保护系统?

以下是将给定文本内容调整为

Markdown 格式

的结果:


遵循最小特权原则的操作系统会实现其功能、程序、系统调用和数据结构,使组件的故障或受损造成的破坏最小。它还提供系统调用和服务,允许应用程序进行细粒度的访问控制,提供在需要时启用特权、不需要时禁用特权的机制,创建所有特权功能访问的审计跟踪。

在管理用户时:

为每个用户创建单独账户

仅赋予其所需特权

计算机可限制运行特定服务、在特定时间通过特定服务访问特定远程主机,通常通过以下方式实现这些限制:

启用或禁用服务

使用访问控制列表

这些措施有助于产生更安全的计算环境。

41、实施最小特权原则的系统为何仍会出现导致安全违规的保护失败情况?

例如,Windows 2000 核心有复杂保护方案但仍有许多安全漏洞。一方面,它的代码行数和服务比 Solaris 多,需要保护的内容更多;另一方面,其保护方案可能不完整或保护了操作系统错误的方面,使其他区域易受攻击。

42、可以通过采用更好的编程方法或使用特殊的硬件支持来避免缓冲区溢出攻击。请讨论这些解决方案。

编程与硬件支持的安全措施



编程方法方面

,应避免简单的编程失误,对输入字段进行边界检查,防止攻击者发送超出程序预期的数据。



硬件支持方面

,一些CPU具备相关特性以避免此类攻击:


Sun的SPARC芯片

:新版本支持禁止在内存栈部分执行代码的设置,

Solaris新版本

已启用该功能。


AMD和Intel x86芯片

:新版本支持

NX特性

(No-eXecute),操作系统如

Linux



Windows XP SP2

已支持该特性。其硬件实现方式是在CPU页表中使用新位,将相关页面标记为不可执行,从而减少缓冲区溢出攻击的可能性。

43、所有密码列表都保存在操作系统中。因此,如果用户设法读取此列表,密码保护就失效了。请提出一种避免此问题的方案。(提示:使用不同的内部和外部表示形式)


可以采用类似 UNIX 系统的安全哈希方法。系统包含一个极难(最好是不可能)逆向计算但易于正向计算的函数。用该函数对所有密码进行编码,只存储编码后的密码。当用户输入密码时,对其进行哈希处理并与存储的编码密码进行比较。此外,在哈希算法中加入“盐值”(随机数),确保相同的明文密码产生不同的哈希值,使字典攻击无效。同时,将哈希后的密码条目存储在只有超级用户可读的文件中。
© 版权声明

相关文章

暂无评论

none
暂无评论...