Red Hat Training

A Red Hat training course is available for RHEL 8

第 5 章 RHEL 8.0.0 发行版本

5.1. 新功能

这部分论述了 Red Hat Enterprise Linux 8 中引入的新功能和主要增强。

5.1.1. Web 控制台

注意

Web 控制台的订阅页面现在由新的 subscription-manager-cockpit 软件包提供。

在 web 控制台中添加了防火墙界面

RHEL 8 web 控制台中的 Networking 页面现在包含 Firewall 部分。在本节中,用户可以启用或禁用防火墙,以及添加、删除和修改防火墙规则。

(BZ#1647110)

Web 控制台现在默认可用

RHEL 8 web 控制台(也称为 Cockpit)的软件包现在是 Red Hat Enterprise Linux 默认软件仓库的一部分,因此可以立即在注册的 RHEL 8 系统中安装。

另外,在非最小安装 RHEL 8 中,会自动安装 web 控制台,控制台所需的防火墙端口会自动打开。登录前还添加了系统消息,提供有关如何启用或访问 Web 控制台的信息。

(JIRA:RHELPLAN-10355)

Web 控制台更好的 IdM 集成

如果您的系统在 Identity Management(IdM)域中注册,RHEL 8 web 控制台现在默认使用域的集中管理的 IdM 资源。这包括以下优点:

  • IdM 域的管理员可以使用 Web 控制台来管理本地计算机。
  • 控制台的 Web 服务器会自动切换到由 IdM 证书颁发机构(CA)发布并被浏览器接受的证书。
  • IdM 域中具有 Kerberos 票据的用户不需要提供登录凭据来访问 Web 控制台。
  • Web 控制台可以访问 IdM 域已知的 SSH 主机,而无需手动添加 SSH 连接。

请注意,要使 IdM 与 web 控制台集成正常工作,用户首先需要在 IdM master 系统中运行带有 enable-admins-sudo 选项的 ipa-advise 工具。

(JIRA:RHELPLAN-3010)

Web 控制台现在与移动浏览器兼容

有了这个更新,Web 控制台菜单和页面可以在移动浏览器变体上导航。这样就可以从移动设备使用 RHEL 8 web 控制台管理系统。

(JIRA:RHELPLAN-10352)

Web 控制台前端页面现在显示缺少的更新和订阅

如果由 RHEL 8 web 控制台管理的系统有过时的软件包或 lapsed 订阅,现在会在系统的 web 控制台前页中显示警告信息。

(JIRA:RHELPLAN-10353)

Web 控制台现在支持 PBD 注册

在这个版本中,您可以使用 RHEL 8 web 控制台界面将基于策略的 Decryption(PBD)规则应用到受管系统上的磁盘。这可使用 Clevis 解密客户端协助 web 控制台中的各种安全管理功能,如自动解锁 LUKS 加密的磁盘分区。

(JIRA:RHELPLAN-10354)

虚拟机现在可以使用 Web 控制台进行管理

Virtual Machines 页面现在可以添加到 RHEL 8 web 控制台界面中,用户可以创建和管理基于 libvirt 的虚拟机。

(JIRA:RHELPLAN-2896)

5.1.2. 安装程序和镜像创建

IBM Z 现在完全支持使用 SEHMC 从 DVD 安装 RHEL

现在完全支持在 IBM Z 硬件上使用 Support Element(SE)硬件管理控制台(HMC) 从 DVD 安装 Red Hat Enterprise Linux 8。这个额外的功能简化了使用 SEHMC 的 IBM Z 上的安装过程。

使用二进制 DVD 引导时,安装程序会提示用户输入附加内核参数。要将 DVD 设为安装源,请在内核参数后附加 inst.repo=hmc。然后安装程序启用了 SEHMC 文件访问,从 DVD 中获取 stage2 镜像,并提供对 DVD 中软件包的访问以供软件选择。

这个新功能消除了外部网络设置的要求,并扩展了安装选项。

(BZ#1500792)

安装程序现在支持 LUKS2 磁盘加密格式

Red Hat Enterprise Linux 8 安装程序现在默认使用 LUKS2 格式,但您可以从 Anaconda 的 Custom Partitioning 窗口中选择 LUKS 版本,或使用 Kickstart 的 autopartlogvolpartRAID 命令中的新选项。

LUKS2 提供了许多改进和功能,例如,它扩展了磁盘上格式的功能,并提供灵活的元数据存储方式。

(BZ#1547908)

Anaconda 支持 RHEL 8 中的系统目的

在以前的版本中,Anaconda 不会为 Subscription Manager 提供系统目的信息。在 Red Hat Enterprise Linux 8.0 中,您可以使用 Anaconda 的 System Purpose 窗口或 Kickstart 的 syspurpose 命令在安装过程中设置系统的预期目的。安装完成后,Subscription Manager 在订阅系统时使用系统用途信息。

(BZ#1612060)

pykickstart 支持 RHEL 8 中的系统目的

在以前的版本中,pykickstart 库无法为 Subscription Manager 提供系统目的信息。在 Red Hat Enterprise Linux 8.0 中,pykickstart 解析新的 syspurpose 命令,并记录系统在自动化和部分自动化安装过程中的预期用途。然后,该信息被传递给 Anaconda,保存在新安装的系统上,并在订阅系统时对 Subscription Manager 可用。

(BZ#1612061)

Anaconda 支持 RHEL 8 中的新内核引导参数

在以前的版本中,您只能从内核引导参数指定基本存储库。在 Red Hat Enterprise Linux 8 中,一个新的内核参数,inst.addrepo=<name>,<url> 允许您在安装过程中指定附加软件仓库。

这个参数有两个强制值:仓库名称和指向存储库的 URL。如需更多信息,请参阅 https://anaconda-installer.readthedocs.io/en/latest/boot-options.html#inst-addrepo

(BZ#1595415)

Anaconda 支持 RHEL 8 中的统一 ISO

在 Red Hat Enterprise Linux 8.0 中,统一的 ISO 会自动加载 BaseOS 和 AppStream 安装源存储库。

这个功能适用于安装时载入的第一个基本存储库。例如:如果您在没有配置软件仓库的情况下引导安装,且在 GUI 中将统一 ISO 作为基本软件仓库,或者使用指向统一 ISO 的 inst.repo= 选项引导安装。因此,AppStream 软件仓库会在 Installation Source GUI 窗口的 Additional Repositories 部分启用。您不能删除 AppStream 存储库或更改其设置,但您可以在 安装源中禁用它。如果您使用不同基础程序库引导安装,然后将其改为统一 ISO,则该功能将不起作用。如果这样做,基本软件仓库将被替换。但是 AppStream 软件仓库不会被替换并指向原始文件。

(BZ#1610806)

Anaconda 可以在 Kickstart 脚本中安装模块化软件包

Anaconda 安装程序已扩展,以处理与应用程序流相关的所有功能:模块、流和配置集。Kickstart 脚本现在可以启用模块和流组合、安装模块配置集以及安装模块化软件包。如需更多信息,请参阅 执行高级 RHEL 安装

(JIRA:RHELPLAN-1943)

现在,RHEL 8 安装选项中提供了 nosmt 引导选项

nosmt 引导选项包括在传递给新安装的 RHEL 8 系统的安装选项中。

(BZ#1677411)

RHEL 8 支持从本地硬盘中的软件仓库安装

在以前的版本中,从硬盘安装 RHEL 需要 ISO 镜像作为安装源。但是,RHEL 8 ISO 镜像对于某些文件系统来说可能太大,例如: FAT32 文件系统无法存储大于 4 GiB 的文件。

在 RHEL 8 中,您可以使用本地硬盘中的软件仓库启用安装。您只需要指定目录而不是 ISO 镜像。例如:'inst.repo=hd:<device>:<path to the repository>'

(BZ#1502323)

RHEL 8 中提供了使用 Image Builder 进行自定义系统镜像创建

Image Builder 工具可让用户创建自定义的 RHEL 镜像。镜像构建程序位于 AppStream 中的 lorax-composer 软件包中。

使用镜像构建器,用户可以创建包含其他软件包的自定义系统镜像。镜像构建器功能可以通过以下方式访问:

  • web 控制台中的图形用户界面
  • composer-cli 工具里的命令行界面。

镜像构建器输出格式包括:

  • 实时 ISO 磁盘镜像
  • 可以直接用于虚拟机或 OpenStack 的 qcow2 文件
  • 文件系统镜像文件
  • Azure、VMWare 和 AWS 的云镜像

如需了解更多有关镜像构建器的信息,请参阅文档标题 组成自定义的 RHEL 系统镜像

(JIRA:RHELPLAN-7291, BZ#1628645, BZ#1628646, BZ#1628647, BZ#1628648)

添加了新的 kickstart 命令: authselectmodules

在这个版本中,添加了以下 kickstart 命令:

  • authselect :使用 authselect 命令在安装过程中设置系统身份验证选项。您可以使用 authselect 作为已弃用的 authauthconfig Kickstart 命令的替代。如需更多信息,请参阅 执行高级安装 指南中的 authselect 部分。
  • module :使用 module 命令在 kickstart 脚本中启用软件包模块流。如需更多信息,请参阅 执行高级安装 指南中的 module 部分。

(BZ#1972210)

5.1.3. 内核

RHEL 8.0 中的内核版本

Red Hat Enterprise Linux 8.0 带有内核版本 4.18.0-80。

(BZ#1797671)

ARM 52 位物理寻址现已可用

在这个版本中,支持 64 位 ARM 架构的 52 位物理寻址(PA)。这比之前的 48 位 PA 提供更大的地址空间。

(BZ#1643522)

IOMMU 代码支持 RHEL 8 中的 5 级页表

Linux 内核中的 I/O 内存管理单元(IOMMU)代码已更新,以支持 Red Hat Enterprise Linux 8 中的 5 级页表。

(BZ#1485546)

支持 5 级分页

在 Linux 内核中添加了新的 P4d_t 软件页表类型,以便在 Red Hat Enterprise Linux 8 中支持 5 级分页。

(BZ#1485532)

内存管理支持 5 级页表

使用 Red Hat Enterprise Linux 7 时,现有内存总线有 48/46 位虚拟/物理内存寻址能力,Linux 内核实施了 4 个级别的页表,以管理这些虚拟地址到物理地址。物理总线寻址行会使物理内存上限限制为 64TB。

这些限制已扩展到 57/52 位的虚拟/物理内存寻址,其中包括 128 PiB 虚拟地址空间和 4 PB 物理内存容量。

通过扩展地址范围,Red Hat Enterprise Linux 8 中的内存管理增加了对 5 级页面表实现的支持,以便可以处理扩展的地址范围。

(BZ#1485525)

kernel-signing-ca.cer 在 RHEL 8 中被移到 kernel-core

在所有 Red Hat Enterprise Linux 7 版本中,kernel-signing-ca.cer 公钥都位于 kernel-doc 包中。但是,在 Red Hat Enterprise Linux 8 中,kernel-signing-ca.cer 已重新定位到每个构架的 kernel-core 软件包中。

(BZ#1638465)

spectre V2 缓解默认从 IBRS 改为 Retpolines

具有第 6 代 Intel Core Processors 的系统及其衍生产品[1]的 Spectre V2 漏洞(CVE-2017-5715)的默认缓解方案已从 Indirect Branch Restricted Speculation(IBRS)改为 Red Hat Enterprise Linux 8 中的 Retpolines。红帽已根据 Intel 的建议进行了此更改,以与 Linux 社区中使用的默认值保持一致,以恢复丢失的性能。但请注意,在某些情况下使用 Retpolines 可能无法完全缓解 Spectre V2。Intel 的回复文档 [2] 描述了任何暴露情况。本文档还说明攻击的风险较低。

对于需要完成 Spectre V2 缓解方案的用例,用户可通过添加 spectre_v2=ibrs 标志,通过内核引导行选择 IBRS。

如果没有使用 Retpoline 支持构建一个或多个内核模块,/sys/devices/system/cpu/vulnerabilities/spectre_v2 文件将指示漏洞,/var/log/messages 文件将识别出错模块。请参阅 如何确定哪些模块负责 spectre_v2 返回 "Vulnerable: Retpoline with insecure module(s)"?

[1] "6 代 Intel 核心处理器及其近乎衍生产品"是 Intel 的 Retpolines 文档所谓的"Skylake-generation"。

[2] Retpoline:一个分支目标入侵缓解 - 白皮书

(BZ#1651806)

Intel® Omni-Path Architecture (OPA) 主机软件

Red Hat Enterprise Linux 8 完全支持 Intel Omni-Path 架构(OPA)主机软件。

Intel OPA 为在集群环境中的计算和 I/O 节点之间的高性能数据传输(高带宽、高消息率、低延迟)提供主机 Fabric Interface(HFI)硬件初始化和设置。

有关安装 Intel Omni-Path 架构文档的说明,请参阅 :https://www.intel.com/content/dam/support/us/en/documents/network-and-i-o/fabric-products/Intel_OP_Software_RHEL_8_RN_K51383.pdf

(BZ#1683712)

NUMA 支持 RHEL 8 中的更多节点

在这个版本中,在具有 64 位 ARM 架构的系统中,非一致性内存访问(NUMA)节点数从 4 个 NUMA 节点增加到 Red Hat Enterprise Linux 8 中的 8 NUMA 节点。

(BZ#1550498)

现在,RHEL 8 中默认启用 IOMMU passthrough

默认情况下,启用了输入/输出内存管理单元(IOMMU)passthrough。这提高了 AMD 系统的性能,因为主机禁用 Direct Memory Access(DMA)重新映射。在这个版本中,Intel 系统也默认禁用了 DMA 重新映射的 Intel 系统的一致性。用户可以通过在内核命令行上,包括 hypervisor,指定 iommu.passthrough=offiommu=nopt 参数来禁用此类行为(并启用 DMA 重新映射)。

(BZ#1658391)

RHEL8 内核现在支持 5 级页表

Red Hat Enterprise Linux 内核现在完全支持具有最多 5 级页表的未来 Intel 处理器。这可让处理器支持多达 4PB 的物理内存和 128PB 虚拟地址空间。使用大量内存的应用程序现在可以尽可能多地使用系统提供的内存,而不受 4 级页表的限制。

(BZ#1623590)

RHEL8 内核支持针对将来 Intel CPU 的增强 IBRS

Red Hat Enterprise Linux 内核现在支持使用增强的 Indirect Branch Restricted Speculation(IBRS)功能来缓解 Spectre V2 漏洞。启用后,IBRS 的性能将优于 Retpolines(默认)来缓解 Spectre V2,并且不会影响 Intel Control-flow Enforcement 技术。因此,在未来 Intel CPU 上启用 Spectre V2 的性能损失会较小。

(BZ#1614144)

bpftool 用于检查和操作基于 eBPF 的程序和映射

Linux 内核中添加了 bpftool 工具,用于根据扩展的 Berkeley Packet 过滤(eBPF)检查和简单操作程序和映射。bpftool 是内核源树的一部分,由 bpftool 软件包提供,该软件包作为 kernel 软件包的子软件包提供。

(BZ#1559607)

kernel-rt 源已更新

kernel-rt 源已更新为使用最新的 RHEL 内核源树。最新的内核源树现在使用上游 v4.18 实时补丁集,与之前的版本相比,它提供了很多程序错误修复和增强。

(BZ#1592977)

5.1.4. 软件管理

YUM 性能改进和支持模块化内容

在 Red Hat Enterprise Linux 8 中,安装软件是由新版本的 YUM 工具可保证的,它基于 DNF 技术(YUM v4)。

yum v4 比 RHEL 7 上之前使用的 YUM v3 有以下优点:

  • 提高了性能
  • 支持模块化内容
  • 设计良好的稳定 API,用于与工具集成

有关 RHEL 7 中新 YUM v4 工具和之前版本的 YUM v3 之间区别的详细信息,请参阅 与 YUM 相比,DNF CLI 中的变化

yum v4 在使用命令行、编辑或者创建配置文件时与 YUM v3 兼容。

要安装软件,您可以使用 yum 命令及其特定选项,方式与在 RHEL 7 中相同。

所选的一些 yum 插件和工具已被移植到新的 DNF 后端,可使用与 RHEL 7 中相同的名称进行安装。它们也提供兼容性符号链接,因此可在通常的位置找到 二进制文件、配置文件和目录。

请注意,YUM v3 提供的旧版本的 Python API 不再可用。我们建议用户将插件和脚本迁移到 YUM v4(DNF Python API)提供的新 API 中,它是稳定的且被完全支持。DNF Python API 请参见 DNF API 参考

Libdnf 和 Hawkey API(C 和 Python)不稳定,在 Red Hat Enterprise Linux 8 生命周期中可能会改变。

有关 YUM 软件包和工具可用性更改的详情,请参阅使用 RHEL 8 的注意事项

YUM v3 的一些功能在 YUM v4 中的行为可能不同。如果此类更改对您的工作流有影响,请向红帽支持创建一个问题单,请参阅 如何打开和管理客户门户网站中的支持问题单所述?

(BZ#1581198)

RHEL 8 中的主要 RPM 功能

Red Hat Enterprise Linux 8 使用 RPM 4.14。这个版本比 RPM 4.11 提供了很多改进,具体信息包括在 RHEL 7 中。最显著的功能包括:

  • debuginfo 软件包可以并行安装
  • 支持弱依赖项
  • 支持富或布尔值依赖项
  • 支持大小超过 4 GB 的打包文件
  • 支持文件触发器

另外,最显著的变化包括:

  • 更严格的 spec-parser
  • 简化对非详细模式输出的签名检查
  • 在宏中添加和弃用

(BZ#1581990)

RPM 现在会在开始安装前验证整个软件包内容

在 Red Hat Enterprise Linux 7 中,RPM 实用程序在解压缩时验证了单个文件的内容。然而,由于多个原因,这是不够的:

  • 如果有效负载损坏,则只有在执行脚本操作后才会注意到它,而这些脚本操作是不可避免的。
  • 如果有效负载损坏,则软件包升级会在替换之前版本的某些文件后中止,这会破坏正常安装。
  • 单个文件的哈希在解压缩的数据上执行,这使得 RPM 易受解压缩器漏洞的影响。

在 Red Hat Enterprise Linux 8 中,使用可用的最佳哈希在单独步骤安装前验证整个软件包。

在 Red Hat Enterprise Linux 8 上构建的软件包在压缩有效负载上使用一个新的 SHA-256 哈希。在经过签名的包中,有效负载哈希还受到签名的保护,因此在不破坏包头上的签名和其他哈希的情况下无法更改载荷哈希。较旧的软件包使用标头和有效负载的 MD5 哈希,除非配置禁用。

%_pkgverify_level 宏还可用于在安装前启用强制签名验证或完全禁用有效负载验证。此外,%_pkgverify_flags 宏可用于限制允许哪些哈希和签名。例如,可以禁用弱 MD5 哈希的使用,但代价是与较旧的软件包兼容。

(JIRA:RHELPLAN-10596)

5.1.5. 基础架构服务

RHEL 8 中推荐的 Tuned 配置集的显著变化

在这个版本中,根据以下规则选择推荐的 Tuned 配置集(由 tuned-adm recommend 命令报告) - 匹配的第一个规则生效:

  • 如果 syspurpose(由 syspurpose show 命令报告)包含 atomic,且同时:

    • 如果 Tuned 在裸机中运行,则会选择 atomic-host 配置集
    • 如果 Tuned 在虚拟机中运行,则会选择 atomic-guest 配置集
  • 如果 Tuned 在虚拟机中运行,则会选择 virtual-guest 配置集
  • 如果 syspurpose 角色包含 desktopworkstation ,并且 chassis 类型(由 dmidecode报告)是NotebookLaptopPortable,则会选择 balanced 配置集。
  • 如果以上规则都不匹配,则会选择 throughput-performance 配置集

(BZ#1565598)

named 生成的文件可以在工作目录中写

在以前的版本中,命名 守护进程在工作目录中存储一些数据,这个目录在 Red Hat Enterprise Linux 中只读。在这个版本中,所选文件的路径已被更改到子目录中,允许写入。现在,默认目录 Unix 和 SELinux 权限允许写入目录。在该目录中分发的文件对 named 仍为只读文件。

(BZ#1588592)

Geolite Databases 已被 Geolite2 Databases 替代

Red Hat Enterprise Linux 7 中存在的 Geolite Databases 被 Red Hat Enterprise Linux 8 中的 Geolite2 Databases 替代。

Geolite Databases 由 GeoIP 软件包提供。上游不再支持此软件包与传统数据库。

Geolite2 数据库由多个软件包提供。libmaxminddb 软件包包括 库和 mmdblookup 命令行工具,该工具支持手动搜索地址。传统 GeoIP 软件包中的 geoipupdate 二进制文件现在由 geoipupdate 软件包提供,能够下载传统的数据库和新的 Geolite2 数据库。

(JIRA:RHELPLAN-6746)

CUPS 日志由 journald 处理

在 RHEL 8 中,CUPS 日志不再存储在 RHEL 7 中的 /var/log/cups 目录中的特定文件中。在 RHEL 8 中,所有类型的 CUPS 日志都与其他程序的日志一起集中记录在 systemd journald 守护进程中。若要访问 CUPS 日志,请使用 journalctl -u cups 命令。如需更多信息,请参阅 使用 CUPS 日志

(JIRA:RHELPLAN-12764)

RHEL 8 中的主要 BIND 功能

RHEL 8 在包含 BIND(Berkeley Internet Name Domain)版本 9.11。与版本 9.10 相比,这个版本的 DNS 服务器引入了多个新功能和功能变化。

新特性:

  • 添加了一个新的置备二级服务器的方法,称为 Catalog Zones
  • Domain Name System Cookies 现在由 named 服务和 dig 工具发送。
  • 现在,Response Rate Limiting 功能可以帮助缓解 DNS 扩展攻击。
  • 提高了响应策略区域(RPZ)的性能。
  • 添加了名为 map 的新区域文件格式。使用此格式存储的区域数据可以直接映射到内存中,这样区域加载就能大大加快。
  • 添加了一个名为 delv (域实体查找和验证)的新工具,它具有类似于 dig 的语义,用于查找 DNS 数据并执行内部 DNS 安全扩展(DNSSEC)验证。
  • 现在提供了一个新的 mdig 命令。此命令是 'dig' 命令的一个版本,它发送多个管道查询并等待响应,而不是发送一个查询并等待响应,然后再发送下一个查询。
  • 添加了一个新的 prefetch 选项,它可提高递归解析器性能。
  • 添加了一个新的 in-view 区域选项,它允许在视图间共享区域数据。当使用这个选项时,多个视图可以在不需要在内存中存储多个副本的情况下为相同的区域服务。
  • 添加了一个新的 max-zone-ttl 选项,它强制执行 zone 的最大 TTL。当加载包含更高 TTL 的区域时,加载会失败。带有更高 TTL 的动态 DNS(DDNS)更新会被接受,但 TTL 会被截断。
  • 添加了新的配额,将递归解析器发送的查询限制到遇到拒绝服务攻击的权威服务器。
  • 现在,nslookup 程序默认查找 IPv6 和 IPv4 地址。
  • named 服务现在在启动前检查其他名称服务器进程是否正在运行。
  • 加载签名区域时,named 现在会检查 Resource Record Signature's(RSIG)起始时间是否在将来,如果是,它会立即重新生成 RRSIG。
  • 区域传送现在使用较小的消息大小来改进消息压缩,这降低了网络使用量。

功能更改:

  • HTTP 接口提供统计频道的版本 3 XML 架构,包括新的统计信息和用于快速解析的扁平化 XML 树。旧版 2 XML 模式不再被支持。
  • named 服务现在默认侦听 IPv6 和 IPv4 接口。
  • named 服务不再支持 GeoIP。由查询发送方假定位置定义的访问控制列表(ACL)不可用。

(JIRA:RHELPLAN-1820)

5.1.6. Shell 和命令行工具

nobody 用户替换 nfsnobody

在 Red Hat Enterprise Linux 7 中,有:

  • ID 为 99 的 nobody 用户和组对,以及
  • ID 为 65534 的 nfsnobody 用户和组对(这是默认的内核溢出 ID)也是如此。

它们都已合并到 nobody 用户和组对中,该对使用 Red Hat Enterprise Linux 8 中的 65534 ID。新安装不再创建 nfsnobody 对。

这一更改减少了对 nobody 所有但与 NFS 无关的文件的混淆。

(BZ#1591969)

RHEL 8 中的版本控制系统

RHEL 8 提供以下版本控制系统:

  • Git 2.18,一种分布式版本控制系统,具有分散架构。
  • Mercurial 4.8 是轻量级分布式版本控制系统,旨在高效地处理大型项目。
  • Subversion 1.10,一个集中版本的控制系统。

请注意,RHEL 7 提供的 Concurrent Versions System(CVS)和修订控制系统(RCS)没有与 RHEL 8 一起发布。

(BZ#1693775)

Subversion 1.10中的显著变化

Subversion 1.10 引入了一些自 RHEL 7 中发布的 1.7 版本以来的新功能,以及以下兼容性变化:

  • 由于 Subversion 库中不兼容用于支持语言绑定,因此不支持 Subversion 1.10Python 3 绑定。因此,Subversion 需要 Python 绑定的应用程序不被支持。
  • 不再支持基于 Berkeley DB 的软件仓库。在迁移前,请使用 svnadmin dump 命令备份使用 Subversion 1.7 创建的库。安装 RHEL 8 后,请使用 svnadmin load 命令恢复存储库。
  • RHEL 7 中的 Subversion 1.7 客户端签出的现有工作副本必须升级至新格式,然后才能从 Subversion 1.10 使用。安装 RHEL 8 后,请在每个工作副本中运行 svn upgrade 命令。
  • 不再支持通过 https:// 访问软件仓库的智能卡验证。

(BZ#1571415)

dstat中的显著变化

RHEL 8 提供了 dstat 工具的新版本。这个工具现在是 Performance Co-Pilot(PCP)工具包的一部分。/usr/bin/dstat 文件和 dstat 软件包的名称现在由 pcp-system-tools 软件包提供。

与 RHEL 7 提供的 dstat 相比,新版本的 dstat 引入了以下改进:

  • python3 支持
  • 历史分析
  • 远程主机分析
  • 配置文件插件
  • 新的性能指标

(BZ#1684947)

5.1.7. 动态编程语言、网页和数据库服务器

Python 3 是 RHEL 8 中默认的 Python 实现

Red Hat Enterprise Linux 8 与 Python 3.6 一起分发。但默认情况下可能不会安装该软件包。要安装 Python 3.6,请使用 yum install python3 命令。

python2 软件包中提供了 Python 2.7。但是,Python 2 的生命周期会更短,其目的在于帮助客户更顺利地过渡到 Python 3

RHEL 8 不与默认的 python 软件包或未指定版本的 /usr/bin/python 执行文件一起分发。建议客户直接使用 python3python2。另外,管理员也可以使用 alternatives 命令来配置 python 命令。

如需更多信息,请参阅 Python 简介

(BZ#1580387)

在 RPM 构建时,Python 脚本必须在解释器指令中指定主版本

在 RHEL 8 中,可执行的 Python 脚本预期使用明确指定至少主 Python 版本的解释器指令(hashbangs)。

构建任何 RPM 软件包时,会自动运行 /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot 策略(BRP)脚本。这个脚本会尝试更正所有可执行文件中的解释器指令。当脚本遇到不指定 Python 主版本的 Python 解释器指令时,它会生成错误,RPM 构建失败。这种模糊的解释解释器指令的示例包括:

  • #! /usr/bin/python
  • #! /usr/bin/env python

要修改在 RPM 构建时导致这些构建错误的 Python 脚本中的解释器指令,请使用 platform-python-devel 软件包中的 pathfix.py 脚本:

pathfix.py -pn -i %{__python3} PATH ...

可以指定多个 PATH。如果 PATH 是一个目录,pathfix.py 递归扫描与模式 ^[a-zA-Z0-9_]+\.py$ 匹配的任何 Python 脚本,而不仅仅扫描那些具有模糊哈希bang的 Python 脚本。将运行 pathfix.py 的命令添加到 %prep 部分,或者在 %install 部分末尾。

如需更多信息,请参阅 处理 Python 脚本中的解释器指令

(BZ#1583620)

PHP中的显著变化

Red Hat Enterprise Linux 8 带有 PHP 7.2。这个版本在 RHEL 7 中与 PHP 5.4 相比包括以下主要变化:

  • PHP 默认使用 FastCGI 进程管理器(FPM)(与线程 httpd一起使用的安全)
  • httpd 配置文件中不应使用 php_valuephp-flag 变量,它们应该改为在池配置中设置: /etc/php-fpm.d/*.conf
  • PHP 脚本错误和警告记录到 /var/log/php-fpm/www-error.log 文件中,而不是 /var/log/httpd/error.log
  • 更改 PHP max_execution_time 配置变量时,应增加 httpd ProxyTimeout 设置以匹配
  • 现在,运行 PHP 脚本的用户在 FPM 池配置中配置( /etc/php-fpm.d/www.conf 文件),apache 用户是默认设置。
  • 需要在配置更改或者安装新扩展后重启 php-fpm 服务
  • zip 扩展已经从 php-common 软件包移动到独立的软件包 php-pecl-zip

删除了以下扩展:

  • aspell
  • MySQL(注意 mysqlipdo_mysql 扩展仍可用,它们由 php-mysqlnd 软件包提供)
  • memcache

(BZ#1580430, BZ#1691688)

Ruby中的显著变化

RHEL 8 提供了 Ruby 2.5,它比 RHEL 7 提供的 Ruby 2.0.0 提供了很多新功能和增强。主要变更包括:

  • 添加了增量垃圾收集器。
  • 添加了 Refinements 语法。
  • 现在会对符号进行垃圾收集。
  • $SAFE=2$SAFE=3 安全等级现已过时。
  • FixnumBignum 类已统一为 Integer 类。
  • 通过优化 Hash 类、改善对实例变量的访问以及 Mutex 类小且更快速,性能得以提高。
  • 某些旧的 API 已被弃用。
  • 捆绑的库,如 RubyGemsRakeRDocPsychMinitesttest-unit 已更新。
  • 其他库,如 mathnDLext/tkXMLRPC(之前与 Ruby 一起分发)已被弃用或不再包含。
  • SemVer 版本控制方案现在用于 Ruby 版本。

(BZ#1648843)

Perl中的显著变化

RHEL 8 提供了 Perl 5.26,与 RHEL 7 中的版本相比有以下变化:

  • Unicode 9.0 现在被支持。
  • 提供了新的 op-entryload-fileload-file SystemTap 探测。
  • 在分配 scalar 时,使用写时复制机制来提高性能。
  • 添加了用于处理 IPv4 和 IPv6 套接字的 IO::Socket::IP 模块。
  • 添加了 Config::Perl::V 模块,来以结构化方式访问 perl -V 数据。
  • 添加了一个新的 perl-App-cpanminus 软件包,其中包含用于从全面的 Perl 存档网络(CPAN)存储库获取、提取、构建和安装模块的 cpanm 实用程序。
  • 出于安全考虑,当前目录. 已从 @INC 模块搜索路径中删除。
  • 现在,因为上面描述的行为更改,当 do 语句无法加载文件时,会返回弃用警告。
  • doroutine(LIST) 调用不再被支持,并会产生语法错误。
  • 现在,默认随机化哈希。每次运行 perl 时,从哈希值返回键和值的顺序都会变化。若要禁用随机化,可将 PERL_PERTURB_KEYS 环境变量设置为 0
  • 不再允许正则表达式模式中未转义的字面 { 字符。
  • 已删除对 $_ 变量的字典范围支持。
  • 在数组或哈希中使用 defined 操作符会导致致命错误。
  • UNIVERSAL 模块中导入功能会导致严重错误。
  • find2perls2pa2pc2phpstruct 工具已被删除。
  • ${^ENCODING} 工具已被删除。encoding pragma 的默认模式不再被支持。要在 UTF-8 之外的其他编码中写入源代码,请使用编码的 Filter 选项。
  • perl 打包现在与上游一致。perl 软件包也会安装核心模块,而 /usr/bin/perl 解释器则由 perl-interpreter 软件包提供。在以前的版本中,perl 软件包只包括一个最小解释器,而 perl-core 软件包则包括解释器和核心模块。
  • IO::Socket::SSL Perl 模块不再从 ./certs/my-ca.pem 文件或 ./ca 目录加载证书颁发机构证书, 从 ./certs/server-key.pem 文件加载服务器私钥、从 ./certs/server-cert.pem 文件加载服务器证书、从 ./certs/client-key.pem 文件加载客户端私钥,以及从 ./certs/client-cert.pem 文件加载客户端证书。明确指定文件的路径。

(BZ#1511131)

Node.js 包括在 RHEL 中

Node.js 是一个软件开发平台,用于使用 JavaScript 编程语言开发快速、可扩展的网络应用程序。它首次在 RHEL 中提供。之前,它只通过 Software Collection 提供。RHEL 8 提供 Node.js 10

(BZ#1622118)

SWIG 中的显著变化

RHEL 8 包含简化的 wrapper 和 Interface Generator(SWIG)版本 3.0,它比 RHEL 7 中发布的版本 2.0 提供了大量新功能、增强和程序错误修复。最值得注意的是,实现了对 C++11 标准的支持。SWIG 现在也支持 Go 1.6PHP 7Octave 4.2Python 3.5

(BZ#1660051)

Apache httpd中的显著变化

RHEL 8 随 Apache HTTP 服务器 2.4.37 一起发布。此版本在 RHEL 7 中对 httpd 进行了以下更改:

  • HTTP/2 支持现在由 mod_http2 软件包提供,这是 httpd 模块的一部分。
  • 现在,mod_md 软件包支持使用自动证书管理环境(ACME)协议的自动 TLS 证书置备和续订(与证书提供程序,如 Let’s Encrypt 一起使用)
  • Apache HTTP 服务器现在支持直接从 PKCS#11 模块的硬件安全令牌加载 TLS 证书和私钥。现在,mod_ssl配置可以使用PKCS#11 URL来别识 TLS 私钥,也可选择使用SSLCertificateKeyFileSSLCertificateFile 指令中的 TLS 证书。
  • 使用 Apache HTTP 服务器默认配置的多处理模块(MPM)已从多进程、分叉模型(称为 prefork)改为高性能多线程模型 event。任何不是线程的第三方模块都需要被替换或删除。要更改配置的 MPM,请编辑 /etc/httpd/conf.modules.d/00-mpm.conf 文件。有关详细信息,请参见 httpd.conf(5) 手册页。

有关 httpd 中的变化及其用法的更多信息,请参阅 设置 Apache HTTP Web 服务器

(BZ#1632754, BZ#1527084, BZ#1581178)

RHEL 提供了新的 nginx web 服务器

RHEL 8 引入了 nginx 1.14,这是支持 HTTP 和其他协议的 Web 和代理服务器,其重点在于高并发性、性能和低内存用量。nginx 以前仅作为 Software Collection 提供。

nginx web 服务器现在支持直接从 PKCS#11 模块的硬件安全令牌加载 TLS 私钥。因此,nginx 配置可以使用 PKCS#11 URL 来识别 ssl_certificate_key 指令中的 TLS 私钥。

(BZ#1545526)

RHEL 8 中的数据库服务器

RHEL 8 提供以下数据库服务器:

  • MySQL 8.0,一个多用户、多线程 SQL 数据库服务器。它由 MySQL 服务器守护进程(mysqld)和多个客户端程序组成。
  • MariaDB 10.3,一个多用户、多线程 SQL 数据库服务器。就所有实际用途而言,Maria DB 与 MySQL 二进制兼容。
  • PostgreSQL 10PostgreSQL 9.6,一种高级对象关系数据库管理系统(DBMS)。
  • Redis 5,一种高级的键值存储。它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集合和排序的集合。Redis 在 RHEL 中第一次提供。

请注意,RHEL 8.0 中不包括 NoSQL MongoDB 数据库服务器,因为它使用服务器幻灯片公共许可证(SSPL)。

(BZ#1647908)

MySQL 8.0中的显著变化

RHEL 8 提供了 MySQL 8.0,它提供以下改进:

  • MySQL 现在包含一个事务数据字典,用于存储数据库对象的信息。
  • MySQL 现在支持角色,它们是特权的集合。
  • 默认字符集已从 latin1 改为 utf8mb4
  • 添加了对通用表表达式(非递归和递归)的支持。
  • MySQL 现在支持窗口功能,它使用相关行对查询中每一行执行计算。
  • InnoDB 现在支持带有锁定读语句的 NOWAITSKIP LOCKED 选项。
  • 改进了与 GIS 相关的功能。
  • JSON 功能已被改进。
  • 新的 mariadb-connector-c 软件包为 MySQLMariaDB 提供通用客户端库。此库可用于任何版本的 MySQLMariaDB 数据库服务器。因此,用户可以将一个应用程序构建连接到 RHEL 8 发布的任何 MySQLMariaDB 服务器。

此外,随 RHEL 8 发布的 MySQL 8.0 服务器被配置为使用 mysql_native_password 作为默认身份验证插件,因为 RHEL 8 中的客户端工具和库与 caching_sha2_password 方法不兼容,这在上游 MySQL 8.0 版本中 默认使用。

要将默认身份验证插件更改为 caching_sha2_password,请编辑 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf 文件:

[mysqld]
default_authentication_plugin=caching_sha2_password

另请参阅 使用 MySQL

(BZ#1649891, BZ#1519450, BZ#1631400)

MariaDB 10.3的显著变化

与 RHEL 7 提供的版本 5.5 相比,MariaDB 10.3 提供了多个新功能,例如:

  • 常见表表达式
  • system-versioned 表
  • FOR 循环
  • 不可见的栏
  • 序列
  • InnoDB的即时 ADD COLUMN
  • 独立于存储引擎的栏压缩
  • 并行复制
  • 多源复制

此外,新的 mariadb-connector-c 软件包为 MySQLMariaDB 提供通用客户端库。此库可用于任何版本的 MySQLMariaDB 数据库服务器。因此,用户可以将一个应用程序构建连接到 RHEL 8 发布的任何 MySQLMariaDB 服务器。

其他显著变化包括:

  • MariaDB Galera 集群 (一个同步的多 master 集群)现在是 MariaDB 的标准部分。
  • InnoDB 是默认存储引擎,而不是 XtraDB
  • 已删除 mariadb-bench 子包。
  • 默认允许插件成熟度等级已改为比服务器成熟度低 一 个等级。因此,在之前使用的,但成熟度较低的插件将不再加载。

另请参阅 使用 MariaDB

(BZ#1637034, BZ#1519450, BZ#1688374)

PostgreSQL中的显著变化

RHEL 8.0 提供了 PostgreSQL 数据库服务器的两个版本,在 postgresql 模块的两个流:PostgreSQL 10 (默认流)和 PostgreSQL 9.6 中分发。RHEL 7 包含 PostgreSQL 版本 9.2。

PostgreSQL 9.6 中的显著变化是:

  • 可以并行执行的顺序操作: scanjoinaggregate
  • 同步复制的改进
  • 改进了全文本搜索功能用于使用短语进行搜索
  • postgres_fdw 数据联合驱动程序现在支持远程 joinsortUPDATEDELETE 操作
  • 显著提高性能,特别是在多 CPU 套接字服务器上的可扩展性方面

PostgreSQL 10 的主要改进包括:

  • 使用 publishsubscribe 关键字进行逻辑复制
  • 基于 SCRAM-SHA-256 机制更强大的密码身份验证
  • 声明性表分区
  • 改进了查询并行性
  • 显著的常规性能改进
  • 改进了监控和控制

另请参阅 使用 PostgreSQL

(BZ#1660041)

Squid中的显著变化

RHEL 8.0 提供了 Squid 4.4,它是一个用于 Web 客户端的高性能代理缓存服务器,它支持 FTP、Gopher 和 HTTP 数据对象。与 RHEL 7 提供的版本 3.5 相比,这个版本包括的新功能、改进和程序错误修复。

主要变更包括:

  • 可配置的 helper 队列大小
  • 对 helper 并发频道的更改
  • 更改 helper 二 进制文件
  • 安全互联网内容适配器协议(ICAP)
  • 改进了对 Symmetric Multi Processing(SMP)的支持
  • 改进的进程管理
  • 删除了对 SSL 的支持
  • 删除了 Edge Side Inudes(ESI)自定义解析程序
  • 多配置更改

(BZ#1656871)

RHEL 提供了新的 Varnish Cache

RHEL 首次提供了Varnish Cache,它是一个高性能 HTTP 反向代理。之前,它只通过 Software Collection 提供。Varnish Cache 在内存中存储文件或碎片,以降低未来等效请求的响应时间和网络带宽消耗。RHEL 8.0 提供了 Varnish Cache 6.0

(BZ#1633338)

5.1.8. Desktop

GNOME Shell,RHEL 8 中的 3.28 版本

GNOME Shell 在 Red Hat Enterprise Linux(RHEL)8 中提供 3.28 版本。主要改进包括:

  • 新的 GNOME Boxes 功能
  • 新屏幕键盘
  • 扩展设备支持,最重要的是 Thunderbolt 3 接口的集成
  • GNOME 软件、dconf-editor 和 GNOME Terminal 的改进

(BZ#1649404)

Wayland 是默认的显示服务器

在 Red Hat Enterprise Linux 8 中,GNOME 会话和 GNOME 显示管理器(GDM)使用 Wayland 作为其默认显示服务器,而不是 X.org 服务器,这些服务器与之前的 RHEL 主版本一起使用。

X.org 相比,Wayland 提供多种优势和改进。最值得注意的是:

  • 更强大的安全模式
  • 改进了多显示器处理
  • 改进了用户界面(UI)扩展
  • 桌面可以直接控制窗口处理。

请注意,以下功能目前不可用,或者无法按预期工作:

  • Wayland 不支持多GPU设置。
  • NVIDIA 二进制驱动程序在 Wayland 下无法正常工作。
  • xrandr 实用程序不会在 Wayland 下工作,因为其处理、解决方案、轮转和布局的方法不同。请注意,操控屏幕的其他 X.org 实用程序在 Wayland 下也无法工作。
  • 屏幕记录、远程桌面和可访问性在 Wayland 下并不总是能正常工作。
  • 没有可用的剪贴板管理器。
  • Wayland 忽略 X11 应用发布的键盘 grab,如虚拟机查看器。
  • 客户机虚拟机(VM)中的 Wayland 具有稳定性和性能问题,因此建议在虚拟环境中使用 X11 会话。

如果您从使用 X.org GNOME 会话的 RHEL 7 系统升级到 RHEL 8,则您的系统将继续使用 X.org。使用以下图形驱动程序时,系统还会自动回退到 X.org

  • NVIDIA 二进制驱动程序
  • cirrus 驱动程序
  • mga 驱动程序
  • aspeed 驱动程序

您可以手动禁用 Wayland 的使用:

  • 要在 GDM 中禁用 Wayland,请在 /etc/gdm/custom.conf 文件中设置 WaylandEnable=false 选项。
  • 要在 GNOME 会话中禁用 Wayland,请在输入登录名称后使用登录屏幕上的 cogwheel 菜单来选择旧的 X11 选项。

有关 Wayland 的详情,请参考 https://wayland.freedesktop.org/

(BZ#1589678)

查找默认未启用的软件仓库中的 RPM 软件包

默认情况下不启用桌面的其他存储库。禁用通过对应的 .repo 文件中的 enabled=0 行来指示。如果您尝试使用 PackageKit 从此类存储库安装软件包,PackageKit 会显示错误消息,指出该应用不可用。要使软件包可用,请将之前在对应 .repo 文件中的 enabled=0 行替换为 enabled=1

(JIRA:RHELPLAN-2878)

GNOME Sofware 用于软件包管理

在 Red Hat Enterprise Linux 7 上的图形环境中为软件包管理提供工具集合的 gnome-packagekit 软件包不再可用。在 Red Hat Enterprise Linux 8 中,GNOME Software 工具程序提供了类似的功能,它可让您安装和更新应用程序及 gnome-shell 扩展。GNOME 软件gnome-software 软件包中分发。

(JIRA:RHELPLAN-3001)

Wayland 上的 GNOME Shell 提供部分扩展

GNOME Shell on Wayland 会话中,提供了部分扩展功能。该功能使得按部分扩展 GUI 成为可能,这可以提高特定显示器上扩展的 GUI 的外观。

请注意,这个功能当前被视为实验性功能,因此在默认情况下是禁用的。

要启用分数扩展,请运行以下命令:

# gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

(BZ#1668883)

5.1.9. 硬件启用

使用 fwupd 进行固件更新可用

RHEL 8 支持固件更新,如 UEFI 胶囊、设备固件升级(DFU)等,使用 fwupd 守护进程。守护进程允许会话软件自动更新本地计算机上的设备固件。

要查看和应用更新,您可以使用:

  • GUI 软件管理器,如 GNOME 软件
  • fwupdmgr 命令行工具

元数据文件从 Linux 供应商固件服务(LVFS)安全门户自动下载,并通过 D-Bus 提交至 fwupd。需要应用的更新将下载,显示用户通知和更新详细信息。用户必须在执行更新前明确同意固件更新操作。

请注意,默认禁用对 LVFS 的访问。

要启用对 LVFS 的访问,请单击 GNOME 软件 对话框中的滑块,或者运行 fwupdmgr enable-remote lvfs 命令。如果您使用 fwupdmgr 获取更新列表,系统会询问您是否要启用 LVFS。

通过 LVFS 的访问权限,您将直接从硬件供应商获得固件更新。请注意,这些更新尚未由红帽 QA 验证。

(BZ#1504934)

完全支持 Optane DC Persistent Memory 技术的内存模式

Intel Optane DC 持久内存存储设备提供数据中心级别的持久内存技术,这可以显著提高事务吞吐量。

要使用内存模式技术,您的系统不需要任何特殊驱动程序或特定认证。内存模式对操作系统是透明的。

(BZ#1718422)

5.1.10. 身份管理

目录服务器中的新密码语法检查

此增强为目录服务器添加新密码语法检查。例如,管理员可以启用字典检查,允许或拒绝使用字符序列和像素组。因此,如果启用,Directory 服务器中的密码策略语法检查会强制执行更安全的密码。

(BZ#1334254)

目录服务器现在提供改进的内部操作日志记录支持

目录服务器中的几个操作由服务器和客户端发起,在后台执行其他操作。在以前的版本中,服务器仅记录 Internal 连接关键字的内部操作,操作 ID 始终设置 -1。在这个版本中,Directory 服务器会记录真正的连接和操作 ID。现在,您可以将内部操作跟踪到导致此操作的服务器或客户端操作。

(BZ#1358706)

tomcatjss 库支持使用 AIA 扩展中的响应器进行 OCSP 检查

有了这个增强,tomcatjss 库支持使用证书的授权信息访问(AIA)扩展的响应程序的在线证书状态协议(OCSP)检查。因此,红帽认证系统的管理员可以配置使用 AIA 扩展中的 URL 的 OCSP 检查。

(BZ#1636564)

pki subsystem-cert-findpki subsystem-cert-show 命令现在显示证书的序列号

有了这个增强,证书系统中的 pki subsystem-cert-findpki subsystem-cert-show 命令在其输出中显示证书的序列号。序列号是重要的信息,通常由多个其他命令要求。因此,现在更容易识别证书的序列号。

(BZ#1566360)

在证书系统中已弃用了 pki userpki group 命令

有了这个更新,新的 pki < subsystem>-userpki <subsystem>-group 命令替换了证书系统中的 pki userpki group 命令。替换的命令仍有效,但它们显示命令已弃用并引用新命令的消息。

(BZ#1394069)

证书系统现在支持系统证书离线续订

在这个版本中,管理员可以使用脱机续订功能续订证书系统中配置的系统证书。当系统证书过期时,证书系统无法启动。因为这个改进,管理员不再需要临时解决方案来替换过期的系统证书。

(BZ#1669257)

证书系统现在可以为外部 CA 签名使用 SKI 扩展创建 CSR

在这个版本中,证书系统支持为外部证书颁发机构(CA)签名使用对象密钥标识符(SKI)扩展创建证书签名请求(CSR)。某些 CA 需要使用特定值或派生自 CA 公钥的扩展。因此,管理员现在可以在传递给 pkispawn 工具的配置文件中使用 pki_req_ski 参数来创建带有 SKI 扩展名的 CSR。

(BZ#1656856)

SSSD 不再使用 [nss] 部分中的 fallback_homedir 值作为 AD 域的回退

在 RHEL 7.7 之前,Active Directory(AD)供应商中的 SSSD fallback_homedir 参数没有默认值。如果没有设置 fallback_homedir,则使用 SSSD 代替 /etc/sssd/sssd.conf 文件中的 [nss] 部分中的同一参数的值。为提高安全性,RHEL 7.7 中的 SSSD 引入了 fallback_homedir 的默认值。因此,SSSD 不再回退到 [nss] 部分中设置的值。如果要使用与 AD 域中 fallback_homedir 参数的默认值不同的值,您必须在域的部分中手动设置它。

(BZ#1652719)

SSSD 现在允许您选择多个智能卡验证设备之一

默认情况下,系统安全服务后台程序(SSSD)会尝试自动检测智能卡身份验证的设备。如果连接了多个设备,SSSD 会选择它检测到的第一个设备。因此,您无法选择特定的设备,有时会导致失败。

在这个版本中,您可以为 sssd.conf 配置文件的 [pam] 部分配置一个新的 p11_uri 选项。这个选项允许您定义用于智能卡验证的设备。

例如,要选择一个由 OpenSC PKCS#11 模块检测到插槽 ID 2 的读取器,请添加:

p11_uri = library-description=OpenSC%20smartcard%20framework;slot-id=2

sssd.conf[pam] 部分:

详情请查看 man sssd.conf 页面。

(BZ#1620123)

本地用户由 SSSD 缓存并通过 nss_ss 模块提供服务

在 RHEL 8 中,系统安全服务守护进程(SSSD)默认为 /etc/passwd/etc/groups 文件中的用户和组提供服务。sss nsswitch 模块先于 /etc/nsswitch.conf 中的文件。

通过 SSSD 为本地用户提供服务的好处是 nss_ ss 模块有一个快速的 内存映射缓存,与与访问磁盘以及每个 NSS 请求打开的文件相比,其加速了名称服务交换(NSS)查找,。在以前的版本中,名称服务缓存守护进程(nscd)帮助加快访问磁盘的过程。但是,与 SSSD 并行使用 nscd 非常麻烦,因为 SSSD 和 nscd 使用自己的独立缓存。因此,在设置中使用 nscd (SSSD 还为远程域的用户服务,如 LDAP 或 Active Directory)可能会导致无法预计的行为。

因此,在 RHEL 8 中,本地用户和组的解析速度更快。请注意,root 用户永远不会被 SSSD 处理,因此 root 解析不会受到 SSSD 中的潜在错误的影响。请注意,如果 SSSD 没有运行,nss_sss 模块会通过回退到 nss_files 来优雅地处理这种情况,以避免出现问题。您不必以任何方式配置 SSSD,文件域会被自动添加。

(JIRA:RHELPLAN-10439)

KCM 替换 KEYRING 作为默认的凭证缓存存储

在 RHEL 8 中,默认凭证缓存存储是 Kerberos 凭证管理器(KCM),它由 sssd-kcm deamon 支持。KCM 克服了之前使用的 KEYRING 的限制,例如难以在容器化环境中使用,因为它没有命名空间,也无法查看和管理配额。

在这个版本中,RHEL 8 包含一个更适合容器化环境的凭证缓存,它为在以后的版本中构建更多功能提供了基础。

(JIRA:RHELPLAN-10440)

Active Directory 用户现在可以管理身份管理

在这个版本中,RHEL 8 允许作为 Identity Management(IdM)组的成员为 Active Directory(AD)用户添加用户 ID 覆盖。ID 覆盖是指描述特定 AD 用户或组属性在特定 ID 视图中应如下所示的记录,本例中为默认信任视图。更新后,IdM LDAP 服务器可以为 AD 用户应用 IdM 组的访问控制规则。

AD 用户现在可以使用 IdM UI 的自助服务功能,例如上传其 SSH 密钥或更改其个人数据。AD 管理员可以在没有两个不同的帐户和密码的情况下完全管理 IdM。请注意,当前 IdM 中选定的功能可能仍对 AD 用户不可用。

(JIRA:RHELPLAN-10442)

sssctl 为 IdM 域打印 HBAC 规则报告

在这个版本中,System Security Services Daemon(SSSD)的 sssctl 实用程序可以打印 Identity Management(IdM)域的访问控制报告。此功能满足特定环境的需求,出于法规原因,查看可访问特定客户端计算机的用户和组列表。在 IdM 客户端上运行 sssctl access-report domain_name 会输出应用于客户端计算机的 IdM 域中的基于主机的访问控制(HBAC)规则的解析子集。

请注意,除了 IdM 外,其它供应商都不支持这个特性。

(JIRA:RHELPLAN-10443)

身份管理软件包作为模块提供

在 RHEL 8 中,安装 Identity Management(IdM)服务器和客户端所需的软件包作为一个模块提供。client 流是 idm 模块的默认流,您可以下载安装客户端所需的软件包,而无需启用流。

IdM 服务器模块流称为 DL1 流。流包含多个与不同类型的 IdM 服务器对应的配置集:server、dns、adtrust、client 和 default。要在 DL1 流的特定配置集中下载软件包:

  1. 启用流。
  2. 切换到通过流提供的 RPM。
  3. 运行 yum module install idm:DL1/profile_name 命令。

在启用了特定流并从中下载软件包后,要切换到新的模块流:

  1. 删除所有相关安装内容,并禁用当前的模块流。
  2. 启用新模块流。

(JIRA:RHELPLAN-10438)

为 RHEL 8 添加了会话记录解决方案

在 Red Hat Enterprise Linux 8(RHEL 8)添加了记录会话记录解决方案。新的 tlog 软件包及其关联的 Web 控制台会话播放器启用,以记录和回放用户终端会话。可以通过 System Security Services Daemon(SSSD)服务针对每个用户或用户组配置记录。所有终端输入和输出都会捕获并存储在系统日志中基于文本的格式。出于安全原因,输入默认为不活动,因为安全原因不会截获原始密码和其他敏感信息。

该解决方案可用于审核安全敏感系统上的用户会话。如果出现安全问题,可以检查记录的会话作为分析的 一 部分。系统管理员现在可以在本地配置会话记录,并使用 tlog-play 工具从 RHEL 8 web 控制台界面或通过命令行界面查看结果。

(JIRA:RHELPLAN-1473)

authselect 简化了用户身份验证的配置

在这个版本中引进了 authselect 工具,它简化了 RHEL 8 主机的用户身份验证配置,替换了 authconfig 工具程序。authselect 提供了一种更安全的 PAM 堆栈管理方法,使系统管理员 PAM 配置更改变得更加简单。Authselect 可用于配置身份验证方法,如密码、证书、智能卡和指纹。请注意,authselect 不配置加入远程域所需的服务。此任务由特殊工具执行,比如 realmdipa-client-install

(JIRA:RHELPLAN-10445)

SSSD 现在默认强制使用 AD GPOs

SSSD 选项 ad_gpo_access_control 的默认设置现在是 enforcing。在 RHEL 8 中,SSSD 默认根据活动目录组策略对象(GPO)强制实施访问控制规则。

红帽建议确保在从 RHEL 7 升级到 RHEL 8 前,在 Active Directory 中正确配置 GPO。如果您不想强制执行 GPO,请将 /etc/sssd/sssd.conf 文件中的 ad_gpo_access_control 选项的值改为 permissive

(JIRA:RHELPLAN-51289)

5.1.11. 编译器和开发工具

将更新至版本 1.66

Boost C++ 库已更新至上游版本 1.66。Red Hat Enterprise Linux 7 中包含的 Boost 版本为 1.53。详情请查看上游变更日志: https://www.boost.org/users/history/

在这个版本中引进了与以前版本的兼容性更改:

  • bs_set_hook() 函数、来自 splay 容器的 splay_set_hook() ,以及 Intrusive 库中 splaytree_algorithms() 函数中的 bool splay = true 额外参数已被删除。
  • JSON 文件中的注释或字符串串联不再被 Property Tree 库中的解析器支持。
  • Math 库中的一些发行版和特殊函数已被修复,可以像记录一样运作,并引发 overflow_error,而不是返回最大有限值。
  • Math 库中的一些标头已移到 libs/math/include_private 目录中。
  • Regex 库中的 basic_regex<>::mark_count()basic_regex<>::subexpression(n) 函数已被更改为与其文档匹配。
  • Variant 库中 variadic 模板的使用可能会破坏元编程函数。
  • boost::python::numeric API 已被删除。用户可以改为使用 boost::python::numpy
  • Atomic 库中不再提供指向非对象类型的指针的算术运算。

(BZ#1494495)

Unicode 11.0.0 支持

Red Hat Enterprise Linux 核心 C 库 glibc 已更新为支持 Unicode 标准版本 11.0.0。因此,所有宽度字符和多字节字符 API 包括字符集之间的转换和转换提供符合此标准的准确和正确的信息。

(BZ#1512004)

boost 软件包现在独立于 Python

在这个版本中,安装 boost 软件包不再安装 Boost.Python 库作为依赖项。要使用 Boost.Python,您需要显式安装 boost-python3boost-python3-devel 软件包。

(BZ#1616244)

提供了新的 compat-libgfortran-48 软件包

为了与使用 Fortran 库的 Red Hat Enterprise Linux 6 和 7 应用程序兼容,现在提供了一个新的 compat-libgfortran-48 兼容性软件包,它提供 libgfortran.so.3 库。

(BZ#1607227)

GCC 中的 Retpoline 支持

在这个版本中,增加了对 GCC 的 retpoline 的支持。retpoline 是一个内核使用的软件结构,用于降低缓解 CVE-2017-5715 中描述的 Spectre 变体 2 攻击的开销。

(BZ#1535774)

增强了对工具链组件中的 64 位 ARM 架构的支持

工具链组件 GCCbinutils 现在为 64 位 ARM 架构提供扩展支持。例如:

  • GCCbinutils 现在支持可扩展 Vector 扩展(SVE)。
  • GCC 添加了对 ARM v8.2 提供的 FP16 数据类型的支持。FP16 数据类型提高了特定算法的性能。
  • binutils 中的工具现在支持 ARM v8.3 架构定义,包括 Pointer Authentication。Pointer Authentication 功能可通过设计自己的功能指针防止恶意代码破坏程序或内核的正常执行。因此,仅在分支到代码中的不同位置时使用可信地址,这样可以提高安全性。

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

IBM POWER 系统的 glibc 优化

这个版本提供了一个新版本的 glibc,它针对 IBM POWER 8 和 IBM POWER 9 架构进行了优化。因此,IBM POWER 8 和 IBM POWER 9 系统现在会在运行时自动切换到适当的优化 glibc 变体。

(BZ#1376834)

GNU C 库更新至 2.28 版本

Red Hat Enterprise Linux 8 包含 GNU C 库(glibc)的版本 2.28。主要改进包括:

  • 安全强化功能:

    • 安全标有 AT_SECURE 标志的二进制文件忽略 LD_LIBRARY_PATH 环境变量。
    • 检查故障的堆栈不再打印回溯追踪,从而加快关机并避免在受到影响的环境中运行更多代码。
  • 性能改进:

    • malloc() 函数的性能已使用线程本地缓存进行了改进。
    • 添加 GLIBC_TUNABLES 环境变量,以改变库性能特性。
    • 线程 semaphores 的实现已改进,添加了新的可扩展 pthread_rwlock_xxx() 函数。
    • 数学库的性能有所改进。
  • 添加了对 Unicode 11.0.0 的支持。
  • 改进了对由 ISO/IEC/IEEE 60559:2011、IEEE 754-2008 和 ISO/IEC TS 18661-3:2015 标准定义的 128 位浮动点数的支持。
  • /etc/resolv.conf 配置文件相关的域名服务(DNS)根解析器改进:

    • 更改文件时将自动重新加载配置。
    • 添加了对任意数量的搜索域的支持。
    • rotate 选项添加了正确的随机选择。
  • 添加了新的开发功能,包括:

    • preadv2pwritev2 内核调用的 Linux 包装器函数
    • 包括 reallocarray()explicit_bzero() 的新函数
    • posix_spawnattr_setflags() 函数的新标记,如 POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

RHEL 中可用的 CMake

在 Red Hat Enterprise Linux 8 中提供了 CMake 构建系统版本 3.11 作为 cmake 软件包。

(BZ#1590139, BZ#1502802)

make 版本 4.2.1

Red Hat Enterprise Linux 8 带有 make 构建工具版本 4.2.1。主要变更包括:

  • 当方法失败时,会显示方法的 makefile 的名称和行号。
  • 添加了 --trace 选项来启用目标追踪。当使用此选项时,会先打印每个方法,即使这个方法的文件名和行号被禁止,以及该方法所在的行号,以及导致调用它的前提条件。
  • 混合显式和隐式规则不再导致 make 终止执行。相反,会输出警告信息。请注意,此语法已被弃用,未来可能会完全删除。
  • $(file …​) 功能已被添加来将文本写入到文件中。如果不使用文本参数调用,则仅打开并立即关闭文件。
  • 新选项 --output-sync-O 可使每个作业对多个作业的输出进行分组,从而简化并行构建的调试。
  • --debug 选项现在还接受 n(none)标记来禁用所有当前启用的调试设置。
  • != shell 分配运算符已添加为 $(shell …​) 功能的替代选择,以提高与 BSD makefile 的兼容性。有关运算符和函数之间的更多详细信息和不同之处,请参阅 GNU make manual。

    请注意,名称以感叹号结尾且紧接分配的变量(如 variable!=value )现在被解释为新语法。要恢复之前的行为,请在声明标记后添加一个空格,比如 variable! =value

  • 添加了 POSIX 标准定义的 ::= 分配操作器。
  • .POSIX 变量被指定后,make 观察处理反斜杠和新行的 POSIX 标准要求。在此模式下,保留反斜杠之前的任何尾随空格,每个反斜杠加上新行并将空格字符转换为单个空格字符。
  • MAKEFLAGSMFLAGS 的行为现在被精确定义。
  • 一个新的变量 GNUMAKEFLAGS 被解析为与 MAKEFLAGS 相同的 make 标记。因此,GNU make 特定标记可以在 MAKEFLAGS 之外存储,并增加了 makefiles 的可移植性。
  • 添加了包含主机架构的新变量 MAKE_HOST
  • 新变量 MAKE_TERMOUTMAKE_TERMERR 表示 make 是否将标准输出和错误写到终端。
  • 在 makefile 中的 MAKEFLAGS 变量中设置 -r-R 选项现在可以正常工作,并分别删除了所有内置规则和变量。
  • 现在,每种方法都记住了 .RECIPEPREFIX 设置。此外,在该方法中扩展的变量也使用该方法前缀设置。
  • -p 选项的输出中会显示 .RECIPEPREFIX 设置和所有特定于目标的变量,就像在 makefile 中一样,而不是注释。

(BZ#1641015)

SystemTap 版本 4.0

Red Hat Enterprise Linux 8 使用 SystemTap 工具工具版本 4.0 进行发布。主要改进包括:

  • 扩展的 Berkeley Packet 过滤器(eBPF)后端已被改进,特别是字符串和功能。若要使用此后端,请使用 --runtime=bpf 选项启动 SystemTap
  • 添加了一个新的导出网络服务,用于 Prometheus 监控系统。
  • 系统调用探测实施已被改进,必要时可使用内核追踪点。

(BZ#1641032)

binutils 版本 2.30 中的改进

Red Hat Enterprise Linux 8 包含 binutils 软件包的版本 2.30。主要改进包括:

  • 改进了对新的 IBM Z 架构扩展的支持。

链接器:

  • 默认情况下,链接器将代码和只读数据放在单独的片段中。因此,创建的可执行文件更大且更易于运行,因为动态加载器可以禁用任何包含只读数据的内存页面的执行。
  • 添加了对 GNU 属性说明的支持,该注释为动态加载器提供有关二进制文件的提示。
  • 在以前的版本中,链接程序为 Intel Indirect Branch Tracking(IBT)技术生成无效的可执行代码。因此,生成的可执行文件无法启动。这个程序错误已被解决。
  • 在以前的版本中,gold 链接器不正确地合并了属性备注。因此,生成的代码中可能会启用错误的硬件功能,代码可能会意外终止。这个程序错误已被解决。
  • 在以前的版本中,金级 链路器创建了末尾带有填充字节的备注部分,以便根据架构实现对齐。由于动态加载器没有期望 padding,所以coud 会意外终止它正在加载的程序。这个程序错误已被解决。

其他工具:

  • readelfobjdump 工具现在可以选择在单独的调试信息文件中追踪链接并在其中显示信息。
  • 新的 --inlines 选项扩展 objdump 工具的现有 --line-numbers 选项,以显示内嵌功能的信息。
  • nm 工具获得了一个新的选项 --with-version-strings,来在其名称后显示符号的版本信息(如果存在的话)。
  • 在 assembler 中添加了对 ARMv8-R52、Cortex-M23 和 Cortex-M33 处理器的支持。

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

Performance Co-Pilot 版本 4.3.0

Red Hat Enterprise Linux 8 提供了 Performance Co-Pilot (PCP)版本 4.3.0。主要改进包括:

  • pcp-dstat 工具现在包含历史分析和 Comma 分隔的值(CSV)格式输出。
  • 日志实用程序可以使用指标标签并帮助文本记录。
  • pmdaperfevent 工具现在在较低 Simultaneous Multi Threading(SMT)级别报告正确的 CPU 号码。
  • pmdapostgresql 工具现在支持 Postgres 系列 10.x。
  • pmdaredis 工具现在支持 Redis 系列 5.x。
  • 通过动态进程过滤和按进程系统调用、ucalls 和 ustat 增强了 pmdabcc 工具。
  • pmdammv 工具现在导出指标标签,格式版本增加到 3。
  • pmdagfs2 工具支持额外的 glock 和 glock 拥有者指标。
  • 对 SELinux 策略进行了几个修复。

(BZ#1641034)

内存保护密钥

在这个版本中,启用了允许每个线程页面保护标志更改的硬件功能。已为 pkey_alloc()pkey_free()pkey_mprotect() 函数添加了新的 glibc 系统调用包装器。另外,已添加了 pkey_set()pkey_get() 函数,以允许访问每个线程的保护标记。

(BZ#1304448)

GCC 现在默认为 IBM Z 中的 z13

在这个版本中,IBM Z 架构代码中的默认 GCC 为 z13 处理器构建代码,并为 z14 处理器调整代码。这等同于使用 -march=z13-mtune=z14 选项。用户可以通过使用目标架构和调整选项来显式覆盖此默认设置。

(BZ#1571124)

elfutils 更新至版本 0.174

在 Red Hat Enterprise Linux 8 中,selfutils 软件包包括在 0.174 版中。主要变更包括:

  • 在以前的版本中,eu-readelf 工具可能会显示一个带有负值的变量,就像它有一个很大的未签名值,或者以负值的形式显示一个大的未签名值。这已被修正,eu-readelf 现在会查找恒定值类型的大小和签名状态,以正确显示它们。
  • 用于读取缺少 CU 的 .debug_line 数据的新函数 dwarf_next_lines() 已被添加到 libdw 库中。此函数可用作 dwarf_getsrclines()dwarf_getsrcfiles() 函数的替代。
  • 在以前的版本中,具有超过 65280 部分的文件可能会在 libelflibdw 库以及所有使用它们的工具中导致错误。这个程序错误已被解决。因此,ELF 文件标头中扩展的 shnumshstrndx 值会被正确处理。

(BZ#1641007)

Valgrind 更新至 3.14 版本

Red Hat Enterprise Linux 8 使用 Valgrind 可执行代码分析工具 3.14。主要变更包括:

  • 添加了一个新的 --keep-debuginfo 选项,用于为卸载的代码保留调试信息。因此,保存的堆栈跟踪可以包含内存中不再存在的代码的文件和行信息。
  • 添加了基于源文件名和行号的压缩。
  • Helgrind 工具已使用 --delta-stacktrace 选项进行了扩展,以指定完整历史记录堆栈跟踪的计算。值得注意的是,将这个选项与 --history-level=full 结合使用可以将 Helgrind 的性能提升高达 25%。
  • Memcheck 工具中,Intel 和 AMD 64 位 arcitects 上优化的代码和 ARM 64 位构架的正率已被降低。请注意,您可以使用 --expensive-definedness-checks 来控制定义的检查处理,并通过牺牲性能提高速率。
  • Valgrind 现在可以识别 IBM Power Systems 的 little-endian 变体的更多指令。
  • Valgrind 现在可以处理 IBM Z 架构 z13 处理器的大部分整数和字符串向量指令。

有关新选项及其已知限制的更多信息,请参阅 valgrind(1) 手册页。

(BZ#1641029, BZ#1501419)

GDB 版本 8.2

Red Hat Enterprise Linux 8 带有 GDB debugger 版本 8.2 Notable 更改,其中包括:

  • IPv6 协议支持使用 GDB 和 gdbserver 进行远程调试。
  • 改进了在没有调试信息的情况下进行调试。
  • GDB 用户界面中的符号补全已被改进,通过使用更多语法结构(如 ABI 标签或命名空间)来提供更好的建议。
  • 现在可以在后台执行命令。
  • 现在,可以使用 Rust 编程语言创建的调试程序。
  • 调试 C 和 C++ 语言已使用对 _Alignofalignof 运算符、C++ rvalue 引用和 C99 变量长度自动数组的解析器支持进行了改进。
  • GDB 扩展脚本现在可以使用 Guile 脚本语言。
  • 新的 API 功能、帧解码器、过滤器和解压器改进了扩展的 Python 脚本语言接口。另外,GDB 配置的 .debug_gdb_scripts 部分中的脚本会自动加载。
  • GDB 现在使用 Python 版本 3 运行其脚本,包括友善打印机、帧解码器、过滤器和解压器。
  • 通过流程执行记录和重播(包括 Thumb 32 位和系统调用说明)改进了 ARM 和 64 位 ARM 架构。
  • GDB 现在支持 64 位 ARM 架构上的可扩展 Vector 扩展(SVE)。
  • 添加了对 Intel PKU 寄存器和 Intel Processor Trace 的支持。
  • 记录和重播功能已扩展,以包含基于 Intel 的系统上的 rdrandrdseed 指令。
  • IBM Z 构架中的 GDB 功能增加了,支持追踪点、快速追踪点、向量寄存器和 ABI 以及 Catch 系统调用。另外,GDB 现在支持更最新的架构指令。
  • GDB 现在可以使用 64 位 ARM 架构中的 SystemTap 静态用户空间探测(SDT)。

(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332, BZ#1550502)

RHEL 的 glibc 本地化在多个软件包中分发

在 RHEL 8 中,glibc 区域和翻译不再由单一 glibc-common 软件包提供。现在,本地化的内容和语言都位于 glibc-langpack-CODE 软件包中。另外,在大多数情形中,默认情况下不安装所有区域,仅安装安装程序中选择的区域。用户必须单独安装所需的所有更多区域设置软件包,或者如果用户希望安装 glibc-all-langpacks,以获取包含之前安装的所有 glibc 区域的区域归档。

如需更多信息,请参阅 请使用语言包

(BZ#1512009)

GCC 版本 8.2

在 Red Hat Enterprise Linux 8 中,GCC 工具链基于 GCC 8.2 版本系列。主要变更包括:

  • 添加了大量常规优化,如别名分析、向量器改进、相同的代码折叠、流程间分析、存储合并优化通过等。
  • 改进了 Address Sanitizer。添加了 Leak Sanitizer 和 Undefined Behavior Sanitizer。
  • 现在可使用 DWARF5 格式生成调试信息。这个功能是实验性的。
  • 源代码覆盖分析工具 GCOV 已进行了各种改进。
  • 为静态检测更多编程错误,添加了新的警告并改进了诊断。
  • GCC 已被扩展,提供一些工具以确保增加生成的代码的强化。与安全性相关的改进包括内置的溢出检查、对堆栈冲突的额外保护、控制流指令的目标地址、有界字符串操作功能的警告,以及检测边界外数组索引的警告。

架构和处理器支持的改进包括:

  • 添加了多个适用于 Intel AVX-512 架构、微架构和 Intel Software Guard 扩展(SGX)的新架构特定选项。
  • 现在,代码生成可以针对 64 位 ARM 架构 LSE 扩展、ARMv8.2-A 16 位 Floating-Point 扩展(FPE)和 ARMv8.2-A、ARMv8.3-A 和 ARMv8.4-A 架构版本。
  • 添加了对 IBM Z 架构的 z13 和 z14 处理器的支持。

与语言和标准有关的显著变化包括:

  • C 语言编译代码时使用的默认标准已改为使用 GNU 扩展的 C17。
  • C++ 语言编译代码时使用的默认标准已改为使用 GNU 扩展的 C++14。
  • C++ 运行时程序库现在支持 C++11 和 C++14 标准。
  • C++ 编译器现在实施 C++14 标准。
  • 改进了对 C 语言标准 C11 的支持。
  • 新的 __auto_type GNU C 扩展在 C 语言中提供了 C++11 auto 关键字的功能子集。
  • 由 ISO/IEC TS 18661-3:2015 标准指定的 _FloatN_FloatNx 类型名称现在由 C 前端识别。
  • 现在,传递空类作为参数不包括在 Intel 64 和 AMD64 构架中,如平台 ABI 要求。
  • 更正了 C++11 alignof 运算符返回的值,以便与 C _Alignof 运算符匹配,并返回最小对齐。要查找首选的对齐,请使用 GNU 扩展名 __alignof__
  • Fortran 语言代码的 libgfortran 库的主要版本已改为 5。
  • 对 Ada(GNAT)、GCC Go 和 Objective C/C++ 语言的支持已被删除。使用 Go Toolset 进行 Go 代码开发。

(JIRA:RHELPLAN-7437, BZ#1512593, BZ#1512378)

Go 加密库 FIPS 模式现在遵循系统设置

在以前的版本中,Go 标准加密库总是使用其 FIPS 模式,除非在使用库构建应用程序时明确禁用它。因此,基于 Go 的应用程序的用户无法控制是否使用 FIPS 模式。在这个版本中,当系统没有以 FIPS 模式配置时,库不会被默认为 FIPS 模式。因此,RHEL 系统中基于 Go 的应用程序的用户对 Go 加密库的 FIPS 模式的使用具有更多控制。

(BZ#1633351)

strace 更新至版本 4.24

Red Hat Enterprise Linux 8 带有 strace 工具版本 4.24。主要变更包括:

  • 系统调用修改功能已添加 -e inject= 选项。这包括注入错误、返回值、延迟和信号。
  • 改进了系统调用资格语法:

    • 为使用正则表达式过滤系统调用,添加了 -e trace=/regex 选项。
    • -e trace= 选项中为系统调用资格前添加问号可让 strace 继续,即使资格与任何系统调用不匹配。
    • -e trace 选项中为系统调用资格中添加了个性化名称。
  • 添加 kvm vcpu 退出原因解码。为此,可使用 -e kvm=vcpu 选项。
  • elfutils 中的 libdw 库现在用于使用 -k 选项时的堆栈展开。此外,符号解调通过 libiberty 库来执行。
  • 在以前的版本中,r 选项会导致 strace 忽略 -t 选项。这个问题已被解决,两个选项现在都独立。
  • 添加了 -A 选项,以附加模式打开输出文件。
  • 添加了 -X 选项来配置 xlat 输出格式。
  • 改进了使用 -yy 选项解码套接字地址。此外,在 -yy 模式中添加了块和字符设备编号打印。
  • 现在,可以在 IBM Z 构架上使用单个 strace 工具跟踪 64 位和 32 位二进制文件。因此,RHEL 8 中不再存在独立的 strace32 软件包。

另外,还添加了、改进或更新以下项目的解码:

  • netlink 协议、消息和属性
  • arch_prctl,bpf,getockopt,io_pgetevent,keyctl,prctl,pkey_alloc,pkey_free,pkey_mprotect,ptrace,rseq,setsockopt,socket,statx 和其他系统调用
  • ioctl 系统调用有多个命令
  • 各种类型的常量
  • execveatinotify_add_watchinotify_initselectsymlinksymlinkat系统调用带有间接参数的 mmap 系统调用的路径追踪
  • 信号代码列表

(BZ#1641014)

RHEL 8 中的编译器工具集

RHEL 8.0 提供了以下编译器工具集作为 Application Streams:

  • clang 和 LLVM Toolset 7.0.1,提供 LLVM 编译器基础架构框架、Clang 编译器和 C++ 语言的 Clang 编译器、LLDB 调试器以及用于代码分析的相关工具。请参阅 使用 Clang 和 LLVM Toolset 文档。
  • Rust Toolset 1.31 提供了 Rust 编程语言编译器 rustccargo 构建工具和依赖项管理器、cargo-vendor 插件和所需的库。请参阅 使用 Rust Toolset 文档。
  • Go Toolset 1.11.5,它提供 Go 编程语言工具和库。Go 也称为 golang。请参阅 使用 Go Toolset 文档。

(BZ#1695698, BZ#1613515, BZ#1613516, BZ#1613518)

RHEL 8 中的 Java 实现和 Java 工具

RHEL 8 AppStream 软件仓库包括:

  • java-11-openjdk 软件包,提供 OpenJDK 11 Java 运行时环境和 OpenJDK 11 Java 软件开发组件。
  • java-1.8.0-openjdk 软件包,提供 OpenJDK 8 Java 运行时环境和开源 JDK 8 Java 软件开发组件。
  • icedtea-web 软件包提供了一个 Java Web Start 的实现。
  • ant 模块,它为编译、汇编、测试和运行 Java 应用程序提供了 Java 库和命令行工具。Ant 更新至 1.10 版本。
  • maven 模块,提供软件项目管理和理解工具。Maven 之前只作为软件集合或不支持的可选渠道提供。
  • scala 模块,为 Java 平台提供通用编程语言。Scala 以前仅作为 Software Collection 提供。

此外,java-1.8.0-ibm 软件包通过 Supplementary 存储库分发。请注意,红帽不支持这个存储库中的软件包。

(BZ#1699535)

std::stringstd::list 中 C++ ABI 的更改

libstdc++ 库中的 std::stringstd::list 类的应用二进制接口(ABI)在 RHEL 7 (GCC 4.8)和 RHEL 8(GCC 8)之间的更改符合 C++11 标准。libstdc++ 库支持新旧 ABI,但其他一些 C++ 系统库则不支持。因此,需要重建针对这些库动态链接的应用程序。这会影响所有 C++ 标准模式,包括 C++98。它还影响了使用红帽开发人员工具集编译器构建的适用于 RHEL 7 的应用程序,该编译器保留旧 ABI,以保持与系统库的兼容性。

(BZ#1704867)

5.1.12. 文件系统和存储

支持 Data Integrity Field/Data Integrity Extension(DIF/DIX)

只有在硬件厂商已验证,并完全支持在 RHEL 中的特定主机总线适配器(HBA)和存储阵列,则支持 DIF/DIX。

在以下配置中不支持 DIF/DIX:

  • 不支持在引导设备中使用。
  • 在虚拟客户机中不支持。
  • 当启用了 DIF/DIX 时,红帽不支持使用 Automatic Storage Management 库(ASMLib)。

在涉及应用程序之前(包括应用程序)的不同层的存储设备上启用或禁用 DIF/DIX。在存储设备中激活 DIF 的方法取决于设备。

有关 DIF/DIX 功能的详情,请参考 什么是 DIF/DIX

(BZ#1649493)

XFS 现在支持共享的 copy-on-write 数据扩展

XFS 支持共享的 copy-on-write 数据扩展功能这个功能可让两个或者多个文件共享一组通用的数据块。当任何一个共享通用块更改的文件时, XFS 会破坏到通用块的链接并创建新文件。这与其他文件系统中找到的 copy-on-write(COW)功能类似。

共享复制时写入数据扩展:

速度快
创建共享副本不会利用磁盘 I/O。
空间效率
共享块不消耗额外的磁盘空间。
透明
共享常见块操作的文件,类似常规文件。

用户空间工具可以使用共享的复制时写入数据扩展:

  • 高效的文件克隆,例如使用 cp --reflink 命令
  • 针对文件的快照

内核子系统(如 Overlayfs 和 NFS)也使用这个功能来更有效地操作。

现在,从 xfsprogs 软件包版本 4.17.0-2.el8 开始,在创建 XFS 文件系统时默认启用共享的写时复制数据扩展。

请注意,直接访问(DAX)设备目前不支持带有共享写时复制数据扩展的 XFS。要创建没有这个功能的 XFS 文件系统,请使用以下命令:

# mkfs.xfs -m reflink=0 block-device

Red Hat Enterprise Linux 7 可以使用共享复制时写入数据扩展以只读模式挂载 XFS 文件系统。

(BZ#1494028)

最大 XFS 文件系统大小为 1024 TiB

XFS 文件系统最多支持的大小从 500 TiB 增加到 1024 TiB。

大于 500 TiB 的文件系统需要:

  • 元数据 CRC 功能和空闲内节点 btree 功能都以文件系统格式启用,以及
  • 分配组大小至少为 512 GiB。

在 RHEL 8 中,mkfs.xfs 工具默认创建满足这些要求的文件系统。

不支持增大一个小于 500 TiB 的新文件系统,它无法满足这些要求。

(BZ#1563617)

ext4 文件系统现在支持 元数据校验和

有了这个更新,ext4 元数据被 checksums保护。这可让文件系统识别损坏的元数据,从而避免损坏并增加文件系统的弹性。

(BZ#1695584)

VDO 现在支持所有构架

Virtual Data Optimizer(VDO)现在包括在 RHEL 8 支持的所有构架中。

有关支持的构架列表,请参阅 第 2 章 构架

(BZ#1534087)

BOOM 引导管理器简化了创建引导条目的过程

BOOM 是 Linux 系统的引导管理器,使用引导装载程序支持 BootLoader 规范用于引导条目配置。它启用了灵活的引导配置,并简化了新引导条目或修改的引导条目的创建:例如,为使用 LVM 创建的系统引导快照镜像。

BOOM 不会修改现有的引导装载程序配置,仅插入附加条目。保持现有配置,并且所有发行版集成(如内核安装和更新脚本)都可以象以前一样继续运行。

BOOM 具有简化的命令行界面(CLI)和 API,可简化创建引导条目的任务。

(BZ#1649582)

LUKS2 现在是加密卷的默认格式

在 RHEL 8 中,LUKS 版本2 (LUKS2) 格式替换了传统的 LUKS(LUKS1)格式。dm-crypt 子系统和 cryptsetup 工具现在使用 LUKS2 作为加密卷的默认格式。LUKS2 在出现部分元数据崩溃事件时,为加密卷提供元数据冗余和自动恢复功能。

由于内部布局,LUKS2 也是将来功能的启用器。它支持通过 libcryptsetup 中构建的通用 kernel-keyring 令牌自动锁定,该令牌允许用户使用存储在 kernel-keyring 保留服务中的密语解锁 LUKS2 卷。

其他显著改进包括:

  • 使用嵌套密钥加密方案进行保护的密钥设置。
  • 更轻松地与基于策略的加密(Clevis)集成。
  • 最多 32 个密钥插槽 - LUKS1 只提供 8 个密钥插槽。

详情请查看 cryptsetup(8)cryptsetup-reencrypt(8) man page。

(BZ#1564540)

Broadcom Emulex 和 Marvell Qlogic Fibre Channel 适配器完全支持 NVMe/FC

现在,当与 Broadcom Emulex 和 Marvell Qlogic Fibre Channel 32Gbit 适配器支持时,Initiator 模式中完全支持 NVMe over Fibre Channel 32Gbit 传输类型。

NVMe over Fibre Channel 是之前在 Red Hat Enterprise Linux 中引入的 Nonvolatile Memory Express(NVMe)协议之外的额外光纤传输类型。

启用 NVMe/FC:

  • 要在 lpfc 驱动程序中启用 NVMe/FC,编辑 /etc/modprobe.d/lpfc.conf 文件并添加以下选项:

    lpfc_enable_fc4_type=3
  • 要在 qla2xxx 驱动程序中启用 NVMe/FC,编辑 /etc/modprobe.d/qla2xx.conf 文件并添加以下选项:

    qla2xxx.ql2xnvmeenable=1

其他限制:

  • NVMe/FC 不支持多路径。
  • NVMe/FC 不支持 NVMe 集群。
  • kdump 不支持 NVMe/FC。
  • 不支持从 Storage Area Network (SAN) NVMe/FC 引导。

(BZ#1649497)

新的 scan_lvs 配置设置

添加了一个新的 lvm.conf 配置文件设置 scan_lvs,默认设置为 0。新的默认行为阻止 LVM 查找 LV 上可能存在的 PV;也就是说,它不会扫描活动 LV 以获得更多 PV。默认设置还可阻止 LVM 在 LV 之上创建 PV。

LV 上方的 PV 可以通过放置在 LV 上的虚拟机镜像来进行,在这种情况下,主机无法安全地访问 PV。避免这种不安全的访问是新默认行为的主要原因。另外,在具有许多活动 LV 的环境中,LVM 可以显著减少设备扫描量。

通过将此设置更改为 1,可以恢复之前的行为。

(BZ#1676598)

新的 DM 多路径配置文件中的 overrides 部分

/etc/multipath.conf 文件现在包含一个 overrides 部分,允许您为所有设备设置配置值。这些属性可由 DM 多路径为所有设备使用,除非被 /etc/multipath.conf 文件的 multipaths 部分中指定的属性覆盖,用于包含该设备的路径。此功能替换了 配置文件的 devices 部分的 all_devs 参数,该参数不再被支持。

(BZ#1643294)

现在支持使用 NVDIMM 设备安装和引导

在更新之前,安装程序会忽略任何模式中的 Nonvolatile Dual Inline Memory Module(NVDIMM)设备。

在这个版本中,内核的改进支持 NVDIMM 设备提供更好的系统性能功能,并增强了对写密集型应用程序(如数据库或分析工作负载)的文件系统访问,并减少了 CPU 开销。

这个版本引进了对以下支持:

  • 使用 nvdimm Kickstart 命令和 GUI 安装的 NVDIMM 设备的使用可让您在扇区模式下从 NVDIMM 设备安装和引导,并在安装过程中将 NVDIMM 设备重新配置为扇区模式。
  • 使用命令处理 NVDIMM 设备,AnacondaKickstart 脚本的扩展。
  • grub2efibootmgrefivar 系统组件能够处理和从 NVDIMM 设备引导。

(BZ#1499442)

改进了在 DM 多路径中发现的边缘路径

multipathd 服务现在支持改进的路径检测。这有助于多路径设备避免可能重复失败的路径,并提高性能。边缘路径(Marginal paths)是带有持久性但可能会出现 I/O 错误的路径。

/etc/multipath.conf 文件中的以下选项控制边路径行为:

  • marginal_path_double_failed_time,
  • marginal_path_err_sample_time,
  • marginal_path_err_rate_threshold,和
  • marginal_path_err_recheck_gap_time.

DM 多路径在配置的示例时间中禁用路径并使用重复 I/O 进行测试,如果:

  • 设置了 multipath.conf 选项,
  • 路径在配置的时间里失败两次,同时
  • 其它路径可用。

如果在本次测试中路径超过配置的 err 速率,DM 多路径会在配置的空白时间忽略它,然后重新测试以查看它是否足够正常工作。

如需更多信息,请参阅 multipath.conf man page。

(BZ#1643550)

块设备的多队列调度

块设备现在在 Red Hat Enterprise Linux 8 中使用多队列调度。这可让块层性能针对使用快速固态驱动器(SSD)和多核系统进行正常扩展。

RHEL 7 及更早的版本中提供的传统调度程序已被删除。RHEL 8 只支持多队列调度程序。

(BZ#1647612)

5.1.13. 高可用性和集群

新的 pcs 命令列出可用的 watchdog 设备并测试 watchdog 设备

要使用 Pacemaker 配置 SBD,需要一个正常工作的 watchdog 设备。此发行版本支持 pcs stonith sbd watchdog list 命令,来列出本地节点上的可用 watchdog 设备,支持 pcs stonith sbd watchdog test 命令来测试 watchdog 设备。有关 sbd 命令行工具的详情请参考 sbd(8)man page。

(BZ#1578891)

pcs 命令现在支持按操作及其间隔过滤资源故障

Pacemaker 现在会根据资源名称和节点的每个资源操作跟踪资源故障。pcs resource failcount show 命令现在允许按资源、节点、操作和间隔过滤故障。它提供了一个选项,可以显示每个资源和节点聚合的故障,或按资源、节点、操作及其间隔详细显示。另外,pcs resource cleanup 命令现在允许按资源、节点、操作和间隔过滤失败。

(BZ#1591308)

corosync 日志中启用的时间戳

corosync 日志以前不包含时间戳,因此很难将它与其他节点和守护进程的日志关联。有了此版本,时间戳存在于 corosync 日志中。

(BZ#1615420)

pcs cluster setuppcs cluster node addpcs cluster node remove 命令有新格式

在 Red Hat Enterprise Linux 8 中,pcs 完全支持 Corosync 3、knet 和节点名称。现在,节点名称是必需的,并替换节点标识符角色中的节点地址。节点地址现在是可选的。

  • pcs host auth 命令中,节点地址默认为节点名称。
  • pcs cluster setuppcs cluster node add 命令中,节点地址默认为 pcs host auth 命令中指定的节点地址。

随着这些更改,设置集群的命令格式、在集群中添加节点以及从集群中删除节点已更改。详情请参阅 pcs cluster setuppcs cluster node addpcs cluster node remove 命令的帮助信息。

(BZ#1158816)

pcs 命令

Red Hat Enterprise Linux 8 包括以下新命令。

  • RHEL 8 引入了一个新命令 pcs cluster node add-guest | remove-guest,它在 RHEL 7 中取代了 pcs cluster remote-node add | remove 命令。
  • RHEL 8 引入了一个新命令 pcs quorum unblock,它取代了 RHEL 7 中的 pcs cluster quorum unblock 命令。
  • pcs resource failcount reset 命令已被删除,因为它与 pcs resource cleanup 命令的功能重复。
  • RHEL 8 引入了一个新命令,其替代了 RHEL 7 中的 pcs resource [show] 命令:

    • RHEL 8 中的 pcs resource [status] 命令替代了 RHEL 7 中的 pcs resource [show] 命令。
    • RHEL 8 中的 pcs resource config 命令替换了 RHEL 7 中的 pcs resource [show] --full 命令。
    • RHEL 8 中的 pcs resource config resource id 命令取代了了 RHEL 7 中的 pcs resource show resource id 命令。
  • RHEL 8 引入了一个新命令,其替换了 RHEL 7 中的 pcs stonith [show] 命令:

    • RHEL 8 中的 pcs stonith [status] 命令取代了 RHEL 7 中的 pcs stonith [show] 命令。
    • RHEL 8 中的 pcs stonith config 命令取代了 RHEL 7 中的 pcs stonith [show] --full 命令。
    • RHEL 8 中的 pcs stonith config resource id 命令取代了 RHEL 7 中的 pcs stonith show resource id 命令。

(BZ#1654280)

RHEL 8 中的 Pacemaker 2.0.0

pacemaker 软件包已升级到 Pacemaker 2.0.0 的上游版本,与之前的版本相比,它提供了一些程序错误修复和增强:

  • Pacemaker 详情日志默认是 /var/log/pacemaker/pacemaker.log (不直接在 /var/log 中,或者与 /var/log/cluster下的 corosync 日志合并)。
  • Pacemaker 守护进程进程已被重命名为更直观地读取日志。例如,pengine 已重命名为 pacemaker-schedulerd
  • 对已弃用的 default-resource-stickinessis-managed-default 集群属性的支持已被丢弃。相反,resource-stickinessis-managed 属性应该在资源默认值中设置。语法已弃用的现有配置(但不是新创建的配置)将自动更新,以使用支持的语法。
  • 如需更完整的更改列表,请参阅 Red Hat Enterprise Linux 8 中的 Pacemaker 2.0 升级

建议在使用 Red Hat Enterprise Linux 7 或更早版本升级现有集群的用户,在所有集群节点上升级 RHEL 前后,在任何集群节点上运行 pcs cluster cib-upgrade

(BZ#1543494)

重命名为可升级克隆资源的 master 资源

Red Hat Enterprise Linux (RHEL) 8 支持 Pacemaker 2.0,其中的 master/slave 资源不再是一个独立的资源类型,而是带有 promotable meta-attribute 设置为 true 的标准克隆资源。实施以下更改后,支持此次更新:

  • 不再可以使用 pcs 命令创建 master 资源。相反,可以创建 可升级的 克隆资源。相关的关键字和命令已从 master 改为 可升级
  • 所有现有的 master 资源都显示为 promotable 克隆资源。
  • 在 Web UI 中管理 RHEL7 集群时,master 资源仍被称为 master,因为 RHEL7 集群不支持可升级克隆。

(BZ#1542288)

用于验证集群中的节点的新命令

Red Hat Enterprise Linux(RHEL)8 对用来验证集群中节点的命令进行了以下更改。

  • 新命令为 pcs host auth。用户可通过此命令指定主机名、地址和 pcsd 端口。
  • pcs cluster auth 命令只验证本地集群中的节点,不接受节点列表
  • 现在可以为每个节点指定地址。pcs/pcsd 随后将使用指定地址与每个节点通信。这些地址可能与 corosync 内部使用的不同。
  • pcs pcsd clear-auth 命令已被 pcs pcsd deauthpcs host deauth 命令替代。新命令允许用户验证单个主机以及所有主机。
  • 在以前的版本中,节点身份验证是双向的,运行 pcs cluster auth 命令会导致所有指定节点相互身份验证。但是,pcs host auth 命令只使本地主机向指定节点进行身份验证。这样,在运行此命令时,可以更好地控制针对其他节点进行身份验证的节点。在集群设置本身,以及添加节点时,pcs 会自动同步集群上的令牌,因此集群中的所有节点仍然会像以前那样自动验证,且集群节点可以相互通信。

请注意,这些更改不是后向兼容的。在 RHEL 7 系统中验证的节点需要再次进行身份验证。

(BZ#1549535)

pcs 命令现在支持隔离历史记录的显示、清理和同步

Pacemaker 的隔离守护进程跟踪所有执行的隔离操作(待处理、成功和失败)。有了此版本,pcs 命令允许用户通过以下方式访问隔离历史记录:

  • pcs status 命令显示失败和待处理的隔离操作
  • pcs status --full 命令显示整个隔离历史记录
  • pcs stonith history 命令提供显示和清理隔离历史记录的选项
  • 虽然隔离历史记录是自动同步的,但 pcs stonith history 命令现在支持一个update选项,其允许用户在必要手手动同步隔离历史记录。

(BZ#1620190, BZ#1615891)

5.1.14. 网络

nftables 取代 iptables 作为默认的网络数据包过滤框架

nftables 框架提供数据包分类工具,它是 iptablesip6tablesarptablesebtables 工具的指定后台。与之前的数据包过滤工具相比,它在方便、特性和性能方面提供了大量改进,最重要的是:

  • 查找表而不是线性处理
  • IPv4IPv6 使用同一个协议框架
  • 规则会以原子方式应用,而不是提取、更新和存储完整的规则集
  • 支持在规则集中的调试和追踪(nftrace)以及监控追踪事件(在 nft 工具中)
  • 更加一致和压缩的语法,没有特定协议的扩展
  • 用于第三方应用程序的 Netlink API

iptables 类似,nftables 使用表来存储链。链包含执行动作的独立规则。nft 工具取代了之前数据包过滤框架中的所有工具。libnftables 库可用于通过 libmnl 库与 nftables Netlink API 进行低级交互。

iptablesip6tablesebtablesarptables 工具被基于 nftables 的置入替换替换为同名。虽然外部行为与其旧的对等点相同,但它们在需要时通过兼容性接口在内部使用 nftables 与传统的 netfilter 内核模块。

可以使用 nft list ruleset 命令查看模块对 nftables 规则集的影响。由于这些工具将表、链和规则添加到 nftables 规则集,请注意 nftables 规则集操作(如 nft flush ruleset 命令)可能会影响使用之前独立的传统命令安装的规则集。

为了帮助快速识存在该工具的哪个变体,版本信息已被更新,其中包含了后端名称。在 RHEL 8 中,基于 nftables 的 iptables 工具打印以下版本字符串:

$ iptables --version
iptables v1.8.0 (nf_tables)

为了进行比较,如果存在旧的 iptables 工具,则会打印以下版本信息:

$ iptables --version
iptables v1.8.0 (legacy)

(BZ#1644030)

RHEL 8 中的主要 TCP 特性

Red Hat Enterprise Linux 8 提供了 TCP 网络堆栈版本 4.18,它提供更高的性能、更好的可伸缩性和稳定性。性能会提高,特别是对于入站连接率高的忙碌的 TCP 服务器的性能。

此外,还提供两种新的 TCP 拥塞算法: BBRNV,提供比 cubic 更低的延迟和更好的吞吐量。

(BZ#1562998)

firewalld 默认使用 nftables

有了此更新,过滤子系统的 nftablesfirewalld 守护进程默认的防火墙后端。要更改后端,请使用 /etc/firewalld/firewalld.conf 文件中的 FirewallBackend 选项。

在使用 nftables 时,这个更改的行为会有以下区别:

  1. iptables 规则的执行总是在 firewalld 规则之前发生

    • iptables 中的 DROP 表示 firewalld从未看到数据包
    • iptables 中的 ACCEPT 表示数据包仍会遵守 firewalld 规则
  2. firewalld 直接规则仍然通过 iptables 实施,而其他 firewalld 功能则使用 nftables
  3. 直接执行规则是在 firewalld 通用接受已建立的连接前执行

(BZ#1509026)

RHEL 8 中的 wpa_supplicant 的显著变化

在 Red Hat Enterprise Linux(RHEL)8 中,wpa_supplicant 软件包是启用了 CONFIG_DEBUG_SYSLOG 构建的。这允许使用 journalctl 实用程序读取 wpa_supplicant 日志,而不必检查 /var/log/wpa_supplicant.log 文件的内容。

(BZ#1582538)

NetworkManager 现在支持 SR-IOV 虚拟功能

在 Red Hat Enterprise Linux 8.0 中,NetworkManager 允许为支持单根 I/O 虚拟化(SR-IOV)的接口配置虚拟功能(VF)的数量。另外,NetworkManager 允许配置 VF 的一些属性,如 MAC 地址、VLAN、欺骗检查设置以及允许的字节速率。请注意,与 SR-IOV 相关的所有属性都位于 sriov 连接设置中。详情请查看 nm-settings(5)手册 页。

(BZ#1555013)

IPVLAN 虚拟网络驱动程序现在被支持

在 Red Hat Enterprise Linux 8.0 中,内核包含对 IPVLAN 虚拟网络驱动程序的支持。在这个版本中,IPVLAN 虚拟网络接口卡(NIC)为本地网络公开单个 MAC 地址的多个容器启用网络连接。这使得单个主机可以克服对同级网络设备支持的 MAC 地址数量可能存在的限制。

(BZ#1261167)

NetworkManager 支持连接的通配符接口名称匹配

在以前的版本中,只能使用接口名的完全匹配来限制到给定接口的连接。在这个版本中,连接具有支持通配符的新 match.interface-name 属性。在这个版本中,用户可以使用通配符模式以更灵活的方式选择连接的接口。

(BZ#1555012)

网络堆栈 4.18 的改进

Red Hat Enterprise Linux 8.0 包括了升级到上游版本 4.18 的网络堆栈,它提供了几个程序错误修复和增强。主要变更包括:

  • 引入了新的卸载功能,如 UDP_GSO,以及某些设备驱动程序 GRO_HW
  • 改进了用户数据报协议(UDP)的显著可扩展性。
  • 改进了通用忙碌轮询代码。
  • 改进了 IPv6 协议的可扩展性。
  • 路由代码的可扩展性得到改进。
  • 添加了一个新的默认传输队列调度算法fq_codel,它可改进传输延迟。
  • 提高了部分传输队列调度算法的可扩展性.例如: pfifo_fast 现在没有锁定。
  • 通过移除垃圾回收内核线程和 ip 片段只在超时后过期,改进了 IP 重新装配单元的可扩展性。因此,DoS 下的 CPU 使用率要低得多,且最大可持续发展片段率会受到为 IP 回配单元配置的内存量的限制。

(BZ#1562987)

iptables 转换为 nftables的新工具

此更新添加了iptables-translateip6tables-translate 工具,来将现有的 iptablesip6tables 规则转换为 nftables 的对等规则。请注意,一些扩展可能缺少响应的转换支持。如果存在这样的扩展,工具会输出带有 # 符号前缀的未转换的规则。例如:

| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill
| nft # -A INPUT -j CHECKSUM --checksum-fill

此外,用户可以使用 iptables-restore-translateip6tables-restore-translate 工具来转换规则转储。请注意,在此之前,用户可以使用 iptables-saveip6tables-save 命令来打印当前规则的转储。例如:

| % sudo iptables-save >/tmp/iptables.dump
| % iptables-restore-translate -f /tmp/iptables.dump
| # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
| add table ip nat
| ...

(BZ#1564596)

使用 NetworkManager添加到 VPN 的新功能

在 Red Hat Enterprise Linux 8.0 中,NetworkManager 为 VPN 提供以下新功能:

  • 支持互联网密钥交换版本 2(IKEv2)协议。
  • 添加了一些更多 Libreswan 选项,如 rightidleftcertnarrowingrekeyfragmentation 选项。有关支持选项的详情,请查看 nm-settings-libreswan man page。
  • 更新了默认密码。这意味着,当用户没有指定密码时,NetworkManager-libreswan 插件允许 Libreswan 应用程序选择系统默认密码。唯一的例外是在用户选择 IKEv1 主动模式配置时。在这种情况下,ike = aes256-sha1;modp1536eps = aes256-sha1 值被传递给 Libreswan

(BZ#1557035)

新数据块类型 I-DATA,添加到 SCTP

在这个版本中,在流控制传输协议(SCTP)中添加了一个新的数据块类型、I-DATA 和流调度程序。在以前的版本中,SCTP 会按照用户发送的顺序发送用户消息。因此,一个大型 SCTP 用户消息会阻止任何流中的所有其他信息,直到完全发送为止。使用 I-DATA 块时,传输序列号(TSN)字段不会被过载。因此,SCTP 现在可以以不同的方式调度流,I-DATA 允许用户消息交集(RFC 8260)。请注意,两个同级都必须支持 I-DATA 块类型。

(BZ#1273139)

NetworkManager 支持配置 ethtool offload 功能

在这个版本中,NetworkManager 支持配置 ethtool offload 功能,用户不再需要使用 init 脚本或 NetworkManager 分配程序脚本。现在,用户可以使用以下方法之一将下载功能配置为连接配置集的一部分:

  • 使用 nmcli 工具
  • 编辑 /etc/NetworkManager/system-connections/ 目录中的密钥文件
  • 编辑 /etc/sysconfig/network-scripts/ifcfg-* 文件

请注意,图形界面和 nmtui 程序目前不支持这个 特性。

(BZ#1335409)

RHEL 8 中的 TCP BBR 支持

现在,Red Hat Enterprise Linux(RHEL)8 支持一个新的 TCP 拥塞控制算法,即 Bottleneck Bandwidth 和 round-trip 时间(BBR)。BBR 尝试确定电压链路的带宽和往返用时(RTT)。大多数拥塞算法基于数据包丢失(包括 CUBIC,默认的 Linux TCP 拥塞控制算法),它们在高吞吐量链路上有问题。BBR 不直接响应丢失事件,它会调整 TCP 架构率使其与可用带宽匹配。TCP BBR 的用户应该在所有相关接口上切换到 fq 队列设置。

请注意,用户应明确使用 fq 而不是 fq_codel

详情请查看 tc-fq man page。

(BZ#1515987)

lksctp-tools,RHEL 8 中的 1.0.18 版本

lksctp-tools 软件包版本 3.28 包括在 Red Hat Enterprise Linux(RHEL)8 中。主要改进和程序错误修复包括:

  • 与 Travis CI 和覆盖范围扫描集成
  • 支持 sctp_peeloff_flags 功能
  • 指明哪些内核功能可用
  • 覆盖范围扫描问题修复

(BZ#1568622)

在 RHEL 8 中默认将 SCTP 模块列入黑名单

为提高安全性,已将一组内核模块移到 kernel-modules-extra 软件包中。默认情况下不安装它们。因此,非 root 用户无法加载这些组件,因为它们会被默认列入黑名单。要使用其中一个内核模块,系统管理员必须安装 kernel-modules-extra 并明确删除模块黑名单。因此,非 root 用户将自动加载软件组件。

(BZ#1642795)

driverctl 0.101 中的显著变化

Red Hat Enterprise Linux 8.0 提供了 driverctl 0.101。此版本包括以下程序错误修复:

  • shellcheck 警告已修复。
  • bash-completion 被安装为 driverctl 而不是 driverctl-bash-completion.sh
  • 非 PCI 总线的 load_override 功能已修复。
  • driverctl 服务在到达 basic.target systemd 目标前加载所有覆盖。

(BZ#1648411)

为 firewalld 添加了富规则优先级

priority 选项已添加到富规则中。这使得用户可以在规则执行期间定义所需的优先级顺序,并提供对富规则的更多高级控制。

(BZ#1648497)

RHEL 8 支持 NVMe over RDMA

在 Red Hat Enterprise Linux(RHEL)8 中,通过远程直接内存访问(RDMA)的 Nonvolatile Memory Express(NVMe)只支持 Infiniband、RoCEv2 和 iWARP(发起端模式)。

请注意,只有故障切换模式支持多路径。

其他限制:

  • kdump 不支持 NVMe/RDMA。
  • 不支持通过 RDMA 从 NVMe 设备引导。

(BZ#1680177)

nf_tables 后端不支持使用 dmesg进行调试

Red Hat Enterprise Linux 8.0 将 thenf_tables 后端用于防火墙,这些防火墙不支持使用 dmesg 实用程序来调试防火墙。要调试防火墙规则,请使用 xtables-monitor -tnft monitor trace 命令解码规则评估事件。

(BZ#1645744)

Red Hat Enterprise Linux 支持 VRF

RHEL 8.0 中的内核支持虚拟路由和转发(VRF)。VRF 设备以及使用 ip 实用程序设置的规则可让管理员在 Linux 网络堆栈中创建 VRF 域。这些域隔离第 3 层的流量,因此管理员可以创建不同的路由表,并在一个主机上的不同 VRF 域内重复使用相同的 IP 地址。

(BZ#1440031)

iproute, RHEL 8 版本 4.18

iproute 软件包附带了 Red Hat Enterprise Linux(RHEL)8 中的 4.18 版本。最显著的变化是标记为 ethX:Y 的接口别名不再被支持,如 eth0:1。要临时解决这个问题,用户应删除别名后缀,该后缀是冒号,在输入 ip link show 之前是以下编号:

(BZ#1589317)

5.1.15. 安全性

RHEL 8.0 发行版本的 SWID 标签

要使用 ISO/IEC 19770-2:2015 机制启用 RHEL 8.0 安装的识别,软件识别(SWID)标签被安装在 /usr/lib/swidtag/redhat.com/com.redhat.com/com.redhat.RHEL-8-<architecture>.swidtag/usr/lib/swidtag/redhat.com/com.redhat.RHEL-8.0-<architecture>.wid.tag中。这些标签的父目录也可以通过 /etc/swid/swidtags.d/redhat.com 符号链接找到。

SWID 标签文件的 XML 签名可使用 xmlsec1 verify 命令验证,例如:

xmlsec1 verify --trusted-pem /etc/pki/swid/CA/redhat.com/redhatcodesignca.cert /usr/share/redhat.com/com.redhat.RHEL-8-x86_64.swidtag

代码签名证书颁发机构的证书也可以从客户门户网站上的 产品签名密钥 页面中获得。

(BZ#1636338)

默认应用系统范围的加密策略

crypto-policies 是 Red Hat Enterprise Linux 8 中的一个组件,它配置核心加密子系统,包括 TLS、IPsec、DNSSEC、Kerberos 和 SSH 协议。它提供一组小的策略,管理员可以使用 update-crypto-policies 命令选择这些策略。

DEFAULT 系统范围的加密策略为当前的威胁模型提供安全设置。它允许 TLS 1.2 和 1.3 协议,以及 IKEv2 和 SSH2 协议。如果 2047 位大于 2047,则接受 RSA 密钥和 Diffie-Hellman 参数。

如需更多信息,请参阅红帽博客上的 Red Hat Enterprise Linux 8 中的加密策略的一致安全性 文章和 update-crypto-policies(8) 手册页。

(BZ#1591620)

openssh rebase 到版本 7.8p1

openssh 软件包已升级到上游版本 7.8p1。主要变更包括:

  • 删除了对 SSH 版本 1 协议的支持。
  • 删除了对 hmac-ripemd160 消息验证代码的支持。
  • 删除了对 RC4(arcfour)加密的支持。
  • 删除了对 Blowfish 加密的支持。
  • 删除了对 CAST 加密的支持。
  • UseDNS 选项的默认值改为no
  • 默认禁用 DSA 公钥算法。
  • Diffie-Hellman 参数的最小 modulus 大小改为 2048 字节。
  • 更改了 ExposeAuthInfo 配置选项的语义。
  • 现在,usePrivilegeSeparation=sandbox 选项是强制的且无法禁用。
  • 最小的 RSA 密钥大小为 1024 位。

(BZ#1622511)

OpenSSH 服务器密钥生成现在由sshd-keygen@.service 处理

如果缺少 RSA、ECDSA 和 ED25519 服务器主机密钥,OpenSSH 会自动创建它们。要在 RHEL 8 中配置主机密钥创建,使用 sshd-keygen@.service 实例化服务。

例如,禁用自动创建 RSA 密钥类型:

# systemctl mask sshd-keygen@rsa.service

如需更多信息,请参阅 /etc/sysconfig/sshd 文件。

(BZ#1228088)

ECDSA 密钥支持 SSH 身份验证

OpenSSH 套件发行版本引进了对保存在 PKCS #11 智能卡中的 ECDSA 密钥的支持。现在,用户可以同时使用 RSA 和 ECDSA 密钥进行 SSH 身份验证。

(BZ#1645038)

libssh 实现 SSH 用于核心加密组件

在 Red Hat Enterprise Linux 8 中使用 libssh 作为核心加密组件。libssh 库实施 Secure Shell(SSH)协议。

请注意,libssh 的客户端遵循通过系统范围的加密策略为 OpenSSH 配置的设置,但服务器端的配置无法通过系统范围的加密策略进行更改。

(BZ#1485241)

加密库中的 TLS 1.3 支持

在这个版本中,在所有主要后端加密库中默认启用传输层安全(TLS)1.3。这通过利用新的算法(如 RSA-PSS 或 X25519)实现了跨操作系统通信层的低延迟并增强应用程序的隐私和安全。

(BZ#1516728)

NSS 现在默认使用 SQL

网络安全服务(NSS)库现在默认使用 SQL 文件格式作为信任数据库。DBM 文件格式用作之前版本中的默认数据库格式,它不支持多个进程同时访问同一数据库,它在上游中已被弃用。因此,使用 NSS 信任数据库存储密钥、证书和撤销信息的应用程序现在默认使用 SQL 格式创建数据库。尝试使用旧的 DBM 格式创建数据库会失败。现有 DBM 数据库以只读模式打开,它们会自动转换为 SQL 格式。请注意,自 Red Hat Enterprise Linux 6 之后,NSS 支持 SQL 文件格式。

(BZ#1489094)

PKCS #11 对智能卡和 HSM 的支持在系统中一致

在这个版本中,使用智能卡和带有 PKCS #11 加密令牌接口的硬件安全模块(HSM)会变得一致。这意味着用户和管理员可以对系统中所有相关工具使用相同的语法。主要改进包括:

  • 支持 PKCS #11 Uniform Resource Identifier(URI)方案,用于确保为管理员和应用程序作者在 RHEL 服务器中启用令牌。
  • 使用 pkcs11.conf 的智能卡和 HSMs 的系统范围注册方法。
  • NSS、GnuTLS 和 OpenSSL(通过 openssl-pkcs11 引擎)应用程序提供了对 HSM 和智能卡的一致支持。
  • Apache HTTP 服务器(httpd)现在无缝支持 HSM。

如需更多信息,请参阅 pkcs11.conf(5) man page。

(BZ#1516741)

Firefox 现在可用于系统范围内注册的 PKCS #11 驱动程序

Firefox Web 浏览器会自动加载 p11-kit-proxy 模块,并且通过 pkcs11.conf 文件在 p11-kit 中注册的每个智能卡会自动检测到。要使用 TLS 客户端身份验证,不需要额外的设置,当服务器请求智能卡的密钥时,会自动使用它们。

(BZ#1595638)

OpenSC现在支持 RSA-PSS

在这个版本中,在 OpenSC 智能卡驱动程序中添加了对 RSA-PSS 加密签名方案的支持。新方案启用客户端软件中支持 TLS 1.3 所需的安全加密算法。

(BZ#1595626)

RHEL 8 中 Libreswan 的显著变化

libreswan 软件包已升级到上游版本 3.27,它提供很多程序错误修复和增强。最显著的变化包括:

  • 支持通过 authby=rsa-sha2 的 RSA-PSS (RFC 7427),通过 authby=ecdsa-sha2 的 ECDSA (RFC 7427), 使用 dh31 关键字的 CURVE25519 ,通过 chacha20_poly1305 加密关键字的 IKE 和 ESP 的 CHACHA20-POLY1305 已为 IKEv2 协议添加。
  • Libreswan 中删除了对替代 KLIPS 内核模块的支持,因为上游完全弃用了 KLIPS。
  • Diffie-Hellman 组不再支持 DH22、DH23 和 DH24(与 RFC 8247 不同)。

请注意,authby=rsasig 已更改为始终使用 RSA v1.5 方法,authby=rsa-sha2 选项使用 RSASSA-PSS 方法。按照 RFC 8247,authby=rsa-sha1 选项。这就是 Libreswan 不再支持带有数字签名的 SHA-1 的原因。

(BZ#1566574)

系统范围的加密策略将 Libreswan 中的默认 IKE 版本改为 IKEv2

Libreswan IPsec 实现中的默认 IKE 版本已从 IKEv1(RFC 2409)改为 IKEv2(RFC 7296)。用于 IPsec 的默认 IKE 和 ESP/AH 算法已更新,以符合系统范围的加密策略、RFC 8221 和 RFC 8247。现在,加密密钥大小为 256 位,优先于 128 位的密钥大小。

默认 IKE 和 ESP/AH 密码现在包括 AES-GCM、CHACHA20POLY1305 和 AES-CBC 用于加密。为了进行完整性检查,它们提供了 AEAD 和 SHA-2。Diffie-Hellman 组现在包含 DH19、DH20、DH21、DH14、DH15、DH16 和 DH18。

以下算法已从默认的 IKE 和 ESP/AH 策略中删除:AES_CTR、3DES、SHA1、DH2、DH5、DH22、DH23 和 DH24。除了 DH22、DH23 和 DH24 除外,这些算法可以通过 IPsec 配置文件中的 ike=phase2alg=/esp=/ah= 选项启用。

要配置仍然需要 IKEv1 协议的 IPsec VPN 连接,请在连接配置文件中添加 ikev2=no 选项。详情请查看 ipsec.conf(5) man page。

(BZ#1645606)

Libreswan 中的 IKE 版本相关更改

在这个版本中,Libreswan 以不同的方式处理互联网密钥交换(IKE)设置:

  • 默认互联网密钥交换(IKE)版本已从 1 改为 2。
  • 连接现在可以使用 IKEv1 或 IKEv2 协议,但不能同时使用两者。
  • 更改了对 ikev2 选项的解释:

    • insist 的值被解释为 IKEv2-only。
    • nonever 解释为 IKEv1-only。
    • propose 的值、yespermit 不再有效,并导致一个错误,因为它不知道这些值是从哪个 IKE 版本从生成的

(BZ#1648776)

RHEL 8 中的 OpenSCAP 的新功能

OpenSCAP 套件已升级到上游版本 1.3.0,它引进了许多与之前版本相比的改进。最显著的功能包括:

  • API 和 ABI 已合并 - 已删除更新、弃用和/或未使用的符号。
  • 探测不作为独立的进程运行,而是作为 oscap 进程中的线程运行。
  • 命令行界面已被更新。
  • Python 2 绑定已被 Python 3 绑定替代。

(BZ#1614273)

SCAP 安全指南 现在支持系统范围的加密策略

scap-security-guide 软件包已被更新,使用预定义的系统范围的加密策略来配置核心加密子系统。与系统范围的加密策略冲突或覆盖的安全内容已被删除。

请注意,这个更改仅适用于 scap-security-guide 中的 安全内容,您不需要更新 OpenSCAP 扫描程序或其他 SCAP 组件。

(BZ#1618505)

改进了 OpenSCAP 命令行界面

现在,所有 oscap 模块和子模块中都提供了详细模式。工具输出改进了格式。

已删除已弃用的选项,以提高命令行界面的可用性。

以下选项不再可用:

  • oscap xccdf generate report 中的--show 已被完全删除。
  • oscap oval eval 中的 --probe-root 已被删除。它可以通过设置环境变量 OSCAP_PROBE_ROOT 来替换。
  • oscap xccdf eval 中的 --sce-results 已被 --check-engine-results 替代
  • validate-xml 子模块已从 CPE、OVAL 和 XCCDF 模块中删除。validate 可用来针对 XML 模式和 XSD 模式验证 SCAP 内容。
  • oscap oval list-probes 命令已被删除,可用探测列表可以改为使用 oscap --version 显示。

OpenSCAP 允许使用 --profile '(all)' 来评估给定 XCCDF 基准中的所有规则,无论配置集是什么。

(BZ#1618484)

SCAP 安全指南 PCI-DSS 配置集与版本 3.2.1 一致

scap-security-guide 软件包为 Red Hat Enterprise Linux 8 提供 PCI-DSS(支付卡行业数据安全标准)配置文件,此配置文件已更新,以与最新的 PCI-DSS 版本 - 3.2.1 保持一致。

(BZ#1618528)

SCAP 安全指南支持 OSPP 4.2

scap-security-guide 软件包为 Red Hat Enterprise Linux 8 提供 OSPP(常规目的操作系统保护配置文件)配置文件版本 4.2 的一个草案。这个配置集反映了在 NIAP 配置中识别到 General Purpose Operating Systems(Protection Profile 版本 4.2)的保护配置集中指定的强制配置控制。SCAP 安全指南提供自动检查和脚本,帮助用户满足 OSPP 中定义的要求。

(BZ#1618518)

RHEL 8 中 rsyslog 的显著变化

rsyslog 软件包已升级到上游版本 8.37.0,它提供很多程序错误修复和增强。最显著的变化包括:

  • 加强了 rsyslog 内部消息的处理;对它们进行速率限制的可能性;修复了可能的死锁。
  • 总体上增强了速率限制 ; 现在记录实际的 垃圾邮件源
  • 改进了对超大小消息的处理 - 用户现在可以设置如何在核心模块和具有独立操作的某些模块中处理它们。
  • 现在可将 mmnormalize 规则基础嵌入到 config 文件中,而不是为其创建单独的文件。
  • 现在,所有 配置 变量(包括 JSON 中的变量)都不区分大小写。
  • PostgreSQL 输出的各种改进。
  • 添加了可以使用 shell 变量控制 config 处理的可能性,例如,额外配置文件的有条件加载、执行语句,或在 config 中包含文本。请注意,过度使用此功能可能会导致 rsyslog 调试问题非常困难。
  • 现在可以在 config 中指定 4 位文件创建模式。
  • 现在,可靠的事件日志记录协议(RELP)输入只能在指定地址上绑定。
  • 邮件输出的 enable.body 选项的默认值现在与文档一致
  • 用户现在可以指定在 MongoDB 输出中应该忽略的插入错误代码。
  • 并行 TCP(pTCP)输入现已是可配置的积压,以更好地负载平衡。
  • 为了避免在 journald 轮转其文件时可能会出现的重复记录,添加了 imjournal 选项。请注意,使用这个选项可能会影响性能。

请注意,可以配置带有 rsyslog 的系统来提供更好的性能,如 配置没有 journald 或具有最小化 journald 使用的系统日志 知识库文章中所述。

(BZ#1613880)

rsyslog 模块: omkafka

要启用 kafka 集中式数据存储场景,您现在可以使用新的 omkafka 模块将日志转发到 kafka 基础架构。

(BZ#1542497)

rsyslog imfile 现在支持符号链接

有了这个更新,rsyslog imfile 模块提供了更好的性能和更多配置选项。这可让您将模块用于更复杂的文件监控用例。例如,您现在可以在配置的路径的任何位置使用带有 glob 模式的文件监视器,并使用提高数据吞吐量来轮转符号链接目标。

(BZ#1614179)

现在,默认的 rsyslog 配置文件格式为非传统的

rsyslog 软件包中的配置文件现在默认使用非传统的格式。旧格式仍可使用,但混合当前和旧版配置语句具有多个限制。需要检查来自以前的 RHEL 版本的配置。详情请查看 rsyslog.conf(5) 手册页。

(BZ#1619645)

Audit 3.0 使用 auditd 替换 audispd

在这个版本中,audispd 的功能已移到 auditd。因此,audispd 配置选项现在是 auditd.conf 的一部分。另外,plugins.d 目录已移到 /etc/audit 下。auditd 和它的插件的当前状态通过运行 service auditd state 命令检查。

(BZ#1616428)

tangd_port_t 允许更改 Tang 的默认端口

在这个版本中引进了 tangd_port_t SELinux 类型,允许 tangd 服务作为 SELinux 强制模式限制运行。这一更改有助于简化将 Tang 服务器配置为侦听用户定义的端口,同时还会将 SELinux 提供的安全级别保持在 enforcing 模式。

如需更多信息,请参阅使用 基于策略的解密配置加密卷的自动解锁 部分。

(BZ#1664345)

新 SELinux 布尔值

这个 SELinux 系统策略更新引进了以下布尔值:

  • colord_use_nfs
  • mysql_connect_http
  • pdns_can_network_connect_db
  • ssh_use_tcpd
  • sslh_can_bind_any_port
  • sslh_can_connect_any_port
  • virt_use_pcscd

要获得包括布尔值的列表,并找出它们是否启用或禁用,请安装 selinux-policy-devel 软件包并使用:

# semanage boolean -l

(JIRA:RHELPLAN-10347)

SELinux 现在支持 systemd No new Privileges

此更新引进了 nnp_nosuid_transition 策略功能,它可在 No New Privileges (NNP)或 nosuid 下启用 SELinux 域转换,如果在旧上下文和新上下文之间允许 nnp_nosuid_transitionselinux-policy 软件包现在包含使用 NNP 安全功能的 systemd 服务的策略。

以下规则描述了允许该服务此功能:

   allow source_domain  target_type:process2 { nnp_transition nosuid_transition };

例如:

   allow init_t fprintd_t:process2 { nnp_transition nosuid_transition };

发行版策略现在还包含 m4 宏接口,可用于使用 init_nnp_daemon_domain() 函数的服务的 SELinux 安全策略。

(BZ#1594111)

支持 mmap syscall 中的新映射权限检查

添加了 SELinux map 权限,以控制对文件、目录、套接字等的内存映射访问。这允许 SELinux 策略阻止直接访问各种文件系统对象,并确保每个此类访问都已重新验证。

(BZ#1592244)

SELinux 现在支持 process 类中的 getrlimit 权限

此更新引入了一个新的 SELinux 访问控制检查,process:getrlimit ,并为 prlimit() 函数进行了添加。这使得 SELinux 策略开发人员能够控制一个进程何时尝试读取,然后使用 process:setrlimit 权限修改另一个进程的资源限制。请注意,SELinux 不会限制通过 prlimit() 操作自己资源限制的进程。如需更多信息,请参阅 prlimit(2)getrlimit(2) man page。

(BZ#1549772)

selinux-policy 现在支持 VxFS 标签

这个版本引进了对 Veritas 文件系统(VxFS)安全扩展属性(xattrs)的支持。这允许在文件系统中为对象存储正确的 SELinux 标签,而不是通用 vxfs_t 类型。因此,完全支持 SELinux 的 VxFS 系统更安全。

(BZ#1483904)

编译时安全强化标志会以更一致的方式应用

在 RHEL 8 分发中的 RPM 软件包中,编译时安全强化标记会更加一致,redhat-rpm-config 软件包现在会自动提供安全强化标记。应用编译时间标志还有助于满足通用标准(CC)要求。应用以下安全强化标记:

  • 用于检测 buffer-overflow 错误: D_FORTIFY_SOURCE=2
  • 检查 C++ 数组、向量和字符串的标准库强化: D_GLIBCXX_ASSERTIONS
  • 对于 Stack Smashing Protector(SSP): fstack-protector-strong
  • 增强例外: fexceptions
  • 对于 Control-Flow Integrity(CFI): fcf-protection=full (仅在 AMD 和 Intel 64 位构架中)
  • 对于地址空间布局随机化(ASLR): fPIE (对于可执行文件)或 fPIC (用于库)
  • 对于保护 Stack Clash 漏洞:fstack-clash-protection ( ARM)
  • 在启动时解析所有符号的链接标志: -Wl,-z,now

如需更多信息,请参阅 gcc(1) 手册页。

(JIRA:RHELPLAN-2306)

5.1.16. 虚拟化

RHEL 8 中的 qemu-kvm 2.12

Red Hat Enterprise Linux 8 与 qemu-kvm 2.12 一起分发。这个版本修复了多个程序错误,并在 Red Hat Enterprise Linux 7 中提供 1.5.3 版本中添加了许多改进。

值得注意的是,引入了以下功能:

  • Q35 客户机机器类型
  • UEFI 客户机引导
  • guest 中的 NUMA 调整和固定
  • vCPU 热插拔
  • 客户机 I/O 线程

请注意,Red Hat Enterprise Linux 8 不支持 qemu-kvm 2.12 中的一些功能。详情请查看红帽客户门户网站中的"RHEL 8 虚拟化功能支持和限制"。

(BZ#1559240)

虚拟化现在支持 Q35 机器类型

Red Hat Enterprise Linux 8 引入了对 Q35 的支持,它是一种基于更现代 PCI Express 的机器类型。这在虚拟设备的特性和性能方面提供了各种改进,并确保更广泛的现代设备与虚拟化兼容。另外,Red Hat Enterprise Linux 8 中创建的虚拟机被设置为默认使用 Q35

另请注意,以前的默认 PC 机器类型已被弃用,只有在虚拟化不支持 Q35 的旧操作系统时使用。

(BZ#1599777)

复制后虚拟机迁移

RHEL 8 使执行 KVM 虚拟机(VM)的复制后迁移成为可能。使用时,复制后迁移会暂停在源主机上迁移虚拟机的 vCPU,仅传输最小的内存页,激活目标主机上虚拟机的 vCPU,并在虚拟机在目标上运行时传输剩余的内存页。

这可显著降低迁移的虚拟机的停机时间,还可保证迁移完成,无论源虚拟机的内存页如何快速变化。因此,它适合迁移持续大量使用的虚拟机,而使用标准的预复制迁移无法迁移。

(JIRA:RHELPLAN-14323)

KVM 虚拟化现在支持 virtio-gpu

已为 KVM 虚拟机引进了 virtio-gpu 显示设备。virtio-gpu 提高了虚拟机图形性能,并可以实现虚拟 GPU 设备的各种增强功能。

(JIRA:RHELPLAN-14329)

KVM 在 RHEL 8 中支持 UMIP

KVM 虚拟化现在支持用户模型讲师(UMIP)功能,这有助于防止用户空间应用程序访问系统范围设置。这减少了权限升级攻击的潜在向量,因此 KVM 管理程序及其客户机机器更安全。

(BZ#1494651)

KVM 客户机崩溃报告中的其他信息

如果客户机意外终止或变得无响应,则 KVM 管理程序生成的崩溃信息已扩展。这使得诊断和修复 KVM 虚拟化部署中的问题变得更加简单。

(BZ#1508139)

NVIDIA vGPU 现在与 VNC 控制台兼容

使用 NVIDIA 虚拟 GPU(vGPU)功能时,现在可以使用 VNC 控制台来显示客户机的视觉输出。

(BZ#1497911)

Ceph 由虚拟化支持

在这个版本中,Red Hat 支持的所有 CPU 架构上的 KVM 虚拟化均支持 Ceph 存储。

(BZ#1578855)

IBM Z 中 KVM 虚拟机的交互式引导装载程序

在 IBM Z 主机上引导 KVM 虚拟机时,QEMU 引导装载程序固件现在可以显示客户机操作系统的互动控制台界面。这样便可在不访问主机环境的情况下对 guest OS 引导问题进行故障排除。

(BZ#1508137)

虚拟机支持 IBM z14 ZR1

KVM 系统管理程序现在支持 IBM z14 ZR1 服务器的 CPU 模型。这可在 IBM Z 系统上运行的 KVM 虚拟机中使用此 CPU 的功能。

(BZ#1592337)

KVM 支持 IBM Z 上的 Telnet 3270

当将 RHEL 8 用作 IBM Z 系统中的主机时,现在可以使用 Telnet 3270 客户端连接到主机上的虚拟机。

(BZ#1570029)

添加了 QEMU 沙盒

在 Red Hat Enterprise Linux 8 中,QEMU 模拟器引入了沙盒功能。QEMU 沙盒为调用 QEMU 可以执行的系统提供可配置的限制,从而使虚拟机更安全。请注意,这个功能会被默认启用和配置。

(JIRA:RHELPLAN-10628)

PV TLB Flush Hyper-V enlightenment

RHEL 8 添加 PV TLB Flush Hyper-V Enlightenment 功能。这提高了在 KVM hypervisor 上过度承诺环境中运行的 Windows 虚拟机(VM)的性能。

(JIRA:RHELPLAN-14330)

IBM POWER 中 KVM 虚拟机的新机器类型

为 IBM POWER 8 和 IBM POWER 9 系统上运行的 KVM 系统管理程序启用了多个新的 rhel-pseries 机器类型。这使得在 IBM POWER 系统的 RHEL 8 中托管的虚拟机(VM)可以正确使用这些机器类型的 CPU 功能。此外,这还允许将 IBM POWER 上的虚拟机迁移到最新版本的 KVM 系统管理程序。

(BZ#1585651, BZ#1595501)

为 Intel Xeon SnowRidge 启用 GFNI 和 CLDEMOT 指令集

在 Intel Xeon SnowRidge 系统上的 RHEL 8 主机上运行的虚拟机(VM)现在可以使用 GFNI 和 CLDEMOT 指令集。在某些情况下,这可能会显著提高此类虚拟机的性能。

(BZ#1494705)

为 OVMF 启用 IPv6

现在,Open Virtual Machine Firmware(OVMF)上启用了 IPv6 协议。这使得使用 OVMF 的虚拟机可以利用 IPv6 提供的各种网络引导改进。

(BZ#1536627)

添加了 NVMe 设备的基于 VFIO 的块驱动程序

QEMU 模拟器为 Non-volatile Memory Express(NVMe)设备引入了基于虚拟功能 I/O(VFIO)的驱动程序。驱动程序直接与附加到虚拟机(VM)的 NVMe 设备通信,并避免使用内核系统层及其 NVMe 驱动程序。因此,这会提高虚拟机中 NVMe 设备的性能。

(BZ#1519004)

支持 Hyper-V Generic UIO 驱动程序

RHEL 8 现在支持 Hyper-V Generic 用户空间 I/O(UIO)驱动程序的多频道功能。这使得在 Hyper-V 管理程序上运行的 RHEL 8 虚拟机可以使用 Data Plane Development Kit(DPDK)Netvsc Poll Mode 驱动程序(PMD),它可增强这些虚拟机的网络功能。

但请注意,Netvsc 接口状态当前显示为 Down,即使它正在运行并且可以使用。

(BZ#1650149)

改进了巨页支持

当使用 RHEL 8 作为虚拟化主机时,用户可以将虚拟机(VM)的内存页大小修改为 CPU 支持的任何大小。这可以显著提高虚拟机的性能。

要配置虚拟机内存页面的大小,请编辑虚拟机的 XML 配置,并将 <hugepages> 元素添加到 <memoryBacking> 部分。

(JIRA:RHELPLAN-14607)

POWER 9 主机上的虚拟机可以使用 THP

在 IBM POWER 9 架构上运行的 RHEL 8 主机中,虚拟机(VM)功能得益于透明大内存页(THP)功能。THP 可让主机内核动态为进程分配大内存页面,从而提高具有大量内存的虚拟机性能。

(JIRA:RHELPLAN-13440)

5.1.17. 支持性

sosreport 可以报告基于 eBPF 的程序和映射

sosreport 工具已被改进来报告 Red Hat Enterprise Linux 8 载入的扩展 Berkeley Packet Filtering(eBPF)程序和映射。

(BZ#1559836)