5.4. 程序错误修复

这部分论述了 Red Hat Enterprise Linux 8.3 中修复的、对用户有严重影响的错误。

5.4.1. 安装程序和镜像创建

RHEL 8 初始设置现在可以通过 SSH 正常工作

在以前的版本中,当使用 SSH 登录到系统时,RHEL 8 初始设置接口不会显示。因此,无法在通过 SSH 管理的 RHEL 8 机器上执行初始设置。这个问题已被解决,在通过 SSH 进行时,RHEL 8 初始设置现在可以正常工作。

(BZ#1676439)

使用 reboot --kexec 命令安装失败

在以前的版本中,当使用包含 reboot --kexec 命令的 Kickstart 文件时,RHEL 8 安装会失败。

在这个版本中,reboot --kexec 的安装可以正常工作。

(BZ#1672405)

America/New York 时区现在可以正确设置

在以前的版本中,交互式 Anaconda 安装过程不允许用户在使用 kickstart 文件设置 America/New York 时区。在这个版本中,如果在 kickstart 文件中没有指定时区,用户现在可以将 America/New York 设定为互动安装程序的首选时区。

(BZ#1665428)

现在正确设置了 SELinux 环境

在以前的版本中,当 SELinux 处于 enforcing 模式时,某些文件夹和文件中的 SELinux 上下文不正确,从而导致在安装后试图访问这些文件时出现意外的 AVC 拒绝。

在这个版本中,Anaconda 会设置正确的 SELinux 上下文。现在,您可以在不手动重新标记文件系统的情况下访问文件夹和文件。

(BZ#1775975)

自动分区现在创建有效的 /boot 分区

在以前的版本中,当使用自动分区或使用带有预配置分区的 kickstart 文件的系统中安装 RHEL 时,安装程序会创建一个可能包含无效的 /boot 分区的分区方案。因此,因为分区方案验证失败,自动安装过程被提前失败。在这个版本中,Anaconda 会创建一个包含有效 /boot 分区的分区方案。因此,自动安装可以如预期完成。

(BZ#1630299)

使用 Binary DVD ISO 镜像的 GUI 安装现在可以成功完成,无需 CDN 注册

在以前的版本中,当使用 Binary DVD ISO 镜像文件执行 GUI 安装时,安装程序的一个竞争条件会阻止安装,直到您使用连接到红帽功能注册系统为止。

在这个版本中,您可以继续安装,而不必使用连接到红帽的功能注册该系统。

(BZ#1823578)

在 Kickstart 中创建并在 ignoredisk --only-use 命令中使用的 iSCSI 或者 FCoE 设备不再停止安装进程

在以前的版本中,当 ignoredisk --only-use 命令中使用在 Kickstart 中创建的 iSCSI 或 FCoE 设备时,安装程序会失败,并显示与 Disk "disk/by-id/scsi-360a9800042566643352b476d674a774a" given in ignoredisk command does not exist 类似的错误。这会停止安装进程。

在这个版本中,这个问题已被解决。安装程序继续工作。

(BZ#1644662)

使用 CDN 的系统注册失败并显示错误 Name or service not known

当您尝试使用内容交付网络(CDN)注册系统时,注册过程会失败,并显示错误消息 Name or service not known

出现这个问题的原因是,空 Custom server URLCustom Base URL 值覆盖系统注册的默认值。

在这个版本中,空值不会覆盖默认值,系统注册可以成功完成。

(BZ#1862116)

5.4.2. 软件管理

dnf-automatic 现在只更新正确 GPG 签名的软件包

在以前的版本中,在执行更新前,dnf-automatic 配置文件不会检查下载的软件包的 GPG 签名。因此,非导入密钥的未签名更新或更新可能会被 dnf-automatic 安装,即使存储库配置需要 GPG 签名检查(gpgcheck=1)。在这个版本中,这个问题已被解决,dnf-auto 在执行更新前会检查下载的软件包的 GPG 签名。因此,只有使用正确 GPG 签名的更新才可以从需要 GPG 签名检查的库中安装。

(BZ#1793298)

逗号不再导致在 append 类型选项中删除条目

在以前的版本中,在 append 类型选项(如 excludeexcludepkgsincludepkgs)中添加结尾的逗号(在列表末尾的一个空条目)会导致删除选项中的所有条目。另外,添加两个逗号(一个空条目)会导致仅在逗号后的条目被使用。

在这个版本中,会忽略不是前导逗号(前导逗号代表列表以一个空条目开始)的空条目。因此,只有开头的逗号从 append 类型选项中删除现有的条目,用户可以使用它来覆盖这些条目。

(BZ#1788154)

5.4.3. Shell 和命令行工具

ReaR 磁盘布局不再包含 Rancher 2 Longhorn iSCSI 设备和文件系统的条目

这个版本从 ReaR 创建的磁盘布局中删除 Rancher 2 Longhorn iSCSI 设备以及文件系统条目。

(BZ#1843809)

现在在 IBM POWER, little endian 上启用一个大于 4 GB 文件的救援镜像创建

在以前的版本中,ReaR 工具无法创建包含在 IBM POWER, little endian 架构中大于 4GB 的救援镜像。在这个版本中,这个问题已被解决,现在可以在 IBM POWER, little endian 上创建一个大于 4 GB 的文件。

(BZ#1729502)

5.4.4. 安全性

SELinux 不再阻止 systemd-journal-gatewayd/dev/shm/ corosync中使用 newfstatat() 调用

在以前的版本中,SELinux 策略不包含一个允许 systemd-journal-gatewayd 守护进程访问由 corosync 服务创建的文件的规则。结果是 SELinux 会拒绝 systemd-journal-gatewayd 调用在由 corosync 创建的共享内存文件中调用 newfstatat() 功能。在这个版本中,SELinux 不再阻止 systemd-journal-gatewaydcorosync 创建的共享内存文件中调用 newfstatat()

(BZ#1746398)

libreswan 现在在所有配置上与 seccomp=enabled 一起工作

在这个更新之前,Libreswan SECCOMP 支持实现中允许的一组系统调用与 RHEL 库的新用法不匹配。因此,当 ipsec.conf 文件中启用了 SECCOMP,syscall 会过滤拒绝的事件 syscalls,而 pluto 守护进程需要它;守护进程会被终止,ipsec 服务被重启。在这个版本中,所有新必需的 syscalls 都被允许, Libreswan 现在可以和 seccomp=enabled 选项一起正常工作。

(BZ#1544463)

SELinux 不再阻止 auditd 停止或者关闭系统

在以前的版本中,SELinux 策略不包含一个允许 Audit 守护进程启动 power_unit_file_t systemd 单元的规则。因此,在日志磁盘分区没有剩余空间的情况下,auditd 也无法停止或关闭系统。

这个 selinux-policy 软件包的更新添加了缺少的规则,现在 auditd 可以正确地停止并关闭系统,且只能在 enforcing 模式的 SELinux 下关闭系统。

(BZ#1826788)

IPTABLES_SAVE_ON_STOP 现在可以正常工作

在以前的版本中,iptables 服务的 IPTABLES_SAVE_ON_STOP 功能无法正常工作,因为保存的 IP 表内容的文件接收到不正确的 SELinux 上下文。这导致 iptables 脚本无法更改权限,因此该脚本无法保存更改。这个版本为 iptables.saveip6tables.save 文件定义了正确的上下文,并创建了文件名转换规则。因此, iptables 服务的 IPTABLES_SAVE_ON_STOP 功能可以正常工作。

(BZ#1776873)

NSCD 数据库现在可以使用不同的模式

nsswitch_domain 属性中的域被允许访问 Name Service Cache Daemon(NSCD)服务。每个 NSCD 数据库都在 nscd.conf 文件中配置,且 shared 属性决定数据库是使用 Shared memory 还是 Socket 模式。在以前的版本中,所有 NSCD 数据库都必须使用相同的访问模式,这取决于 nscd_use_shm 布尔值。现在,总是允许使用 Unix 流套接字,因此不同的 NSCD 数据库可以使用不同的模式。

(BZ#1772852)

当使用 --sudo 扫描远程系统时,oscap-ssh 工具现在可以正常工作

在使用带有 --sudo 选项的 oscap-ssh 工具对远程系统执行安全内容自动化协议(SCAP)扫描时,远程系统上的 oscap 工具以 root 用户的身份将扫描结果和报告文件保存到一个临时目录中。在以前的版本中,如果远程机器中的 umask 设置被改变,oscap-ssh 可能会无法访问这些文件。在这个版本中解决了这个问题,oscap 以目标用户身份保存文件,而 oscap-ssh 会正常访问这些文件。

(BZ#1803116)

OpenSCAP 现在正确处理远程文件系统

在以前的版本中,如果挂载规范没有以两个斜杠开头,OpenSCAP 将无法可靠地检测远程文件系统。因此,OpenSCAP 将一些基于网络的文件系统作为本地文件系统进行处理。有了这个更新,OpenSCAP 使用文件系统类型而不是挂载规范来识别文件系统。因此,OpenSCAP 现在可以正确处理远程文件系统。

(BZ#1870087)

openscap 不再从 YAML 多行字符串中删除空白行

在以前的版本中,OpenSCAP 会从数据流生成的 Ansible 修复中删除 YAML 多行字符串中的空白行。这会影响 Ansible 修复,并导致 openscap 工具未能通过响应的开放漏洞和评估语言(OVAL)检查,从而产生假阳性结果。这个问题现已解决,因此 openscap 不再从 YAML 多行字符串中删除空白行。

(BZ#1795563)

OpenSCAP 现在可以在没有内存不足的情况下扫描含有大量文件的系统

在以前的版本中,当扫描内存较低和大量文件的系统时,OpenSCAP 扫描程序有时会导致系统内存不足。在这个版本中,OpenSCAP 扫描程序内存管理有所改进。因此,扫描程序在扫描大量文件时,如,软件包组 Server with GUIWorkstation ,在 RAM 较少的系统上不会再耗尽内存。

(BZ#1824152)

config.enabled 现在可以正确地控制语句

在以前的版本中,rsyslog 在语句的配置处理过程中错误地评估了 config.enabled 指令。因此,对于除了 include() 外的每一个语句,都会显示 parameter not known 错误。在这个版本中,所有语句都会相等地处理。现在,config.enabled 可以正确地禁用或启用语句而无需显示任何错误。

(BZ#1659383)

fapolicyd 不再阻止 RHEL 更新

当更新替换了正在运行的应用程序的二进制文件时,内核会通过附加 " (deleted)" 后缀来修改内存中的应用程序二进制路径。在以前的版本中,fapolicyd 文件访问策略守护进程将此类应用程序视为不受信任的应用程序,并阻止它们打开和执行任何其他文件。因此,在应用更新后系统有时无法启动。

随着 RHBA-2020:5242 公告的发布,fapolicyd 会忽略二进制路径中的后缀,以便二进制文件可以匹配信任的数据库。因此,fapolicyd 会正确强制执行规则,并使更新过程可以完成。

(BZ#1897090)

e8 配置文件现在可以用来修复带有 Server with GUI 的 RHEL 8 系统

使用 OpenSCAP Anaconda 附加组件强化带有配置文件的 Server with GUI 软件包组上的系统,该配置文件从 Verify Integrity with RPM 组中选择规则,不再需要系统上大量的 RAM。造成此问题的原因是 OpenSCAP 扫描程序。如需了解更多详细信息,请参阅扫描大量使用 OpenSCAP 的文件会导致系统内存不足。因此,使用 RHEL 8 Essential Eight(e8)配置文件强化系统现在也可以使用 Server with GUI

(BZ#1816199)

5.4.5. 网络

nft_compat 模块自动加载 iptables 扩展模块不再挂起

在以前的版本中,当 nft_compat 模块加载一个扩展模块,而网络命名空间(netns)操作并行发生时,如果该扩展在初始化过程中注册了一个 pernet 子系统,则会发生锁冲突。因此,内核调用的 modprobe 命令会挂起。这也可能是由其它还执行 iptables 命令的服务(比如 libvirtd )造成。这个问题已被解决。因此,由 nft_compat 模块载入 iptables 扩展模块不再挂起。

(BZ#1757933)

现在,firewalld 服务在服务停止时删除 ipset

在以前的版本中,停止 firewalld 服务不会删除 ipset。在这个版本中解决了这个问题。因此,firewalld 停止后 ipset 不再会留在系统中。

(BZ#1790948)

firewalld 在关闭后不再保留 ipset 条目

在以前的版本中,关闭 firewalld 不会删除 ipset 条目。因此,ipset 条目即使在停止 firewalld 服务后仍保留在内核中。在这个版本中,关闭 firewalld 会如预期删除 ipset 条目。

(BZ#1682913)

firewalld 现在在重新载入后恢复 ipset 条目

在以前的版本中, firewalld 在重新载入后无法保留运行时 ipset 条目。因此,用户需要手动添加缺少的条目。在这个版本中,firewalld 已被修改来在重新加载后恢复 ipset 条目。

(BZ#1809225)

nftablesfirewalld 服务现在是相互排斥的

在以前的版本中,您可以同时启用 nftablesfirewalld 服务。因此,nftables 会覆盖 firewalld 规则集。在这个版本中,nftablesfirewalld 服务是相互排斥的,因此无法同时启用它们。

(BZ#1817205)

5.4.6. 内核

huge_page_setup_helper.py 脚本现在可以正常工作

更新 Python 3 的 huge_page_setup_helper.py 脚本的补丁被意外删除。因此,在执行 huge_page_setup_helper.py 后会出现以下错误信息:

SyntaxError: Missing parentheses in call to 'print'

有了这个更新,这个问题已通过更新 libhugetlbfs.spec 文件解决了。因此,huge_page_setup_helper.py 在描述的场景中不会显示任何错误。

(BZ#1823398)

有大量持久内存的系统启动更快,且不会超时

有大量持久内存的系统需要很长时间才能启动,因为初始源代码只允许每个节点有一个初始化线程。例如,对于 4 节点系统,有 4 个内存初始化线程。因此,如果 /etc/fstab 文件中列出了持久内存文件系统,则系统在等待设备可用时可能会超时。有了这个更新,这个问题已被解决,因为源代码现在允许单个节点中有多个内存初始化线程。因此,系统启动会更快,在上述场景中没有出现超时。

(BZ#1666538)

bcc 脚本现在可以成功编译 BPF 模块

在编译脚本代码以创建 Berkeley Packet Filter(BPF)模块期间,bcc 工具包对数据类型定义使用内核头文件。有些内核标头需要定义 KBUILD_MODNAME 宏。因此,那些没有添加 KBUILD_MODNAMEbcc 脚本可能无法在不同的 CPU 构架中编译 BPF 模块。以下 bcc 脚本会受到影响:

  • bindsnoop
  • sofdsnoop
  • solisten
  • tcpaccept
  • tcpconnect
  • tcpconnlat
  • tcpdrop
  • tcpretrans
  • tcpsubnet
  • tcptop
  • tcptracer

在这个版本中,把 KBUILD _MODNAME 添加到 bcc 的默认 cflags 参数解决了这个问题。因此,这个问题不再出现在上述场景中。另外,客户脚本也不需要自行定义 KBUILD_MODNAME

(BZ#1837906)

bcc-toolsbpftrace 可以在 IBM Z 上正常工作。

在以前的版本中,包括一个 ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 内核选项。然而,IBM Z 构架的 bcc-tools 软件包和 bpftrace 追踪语言没有对这个选项的适当支持。因此, bpf() 系统调用失败,并显示 Invalid 参数 异常, bpftrace 失败,并在尝试载入 BPF 程序时给出 Error loading program 程序错误。在这个版本中, ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 选项被删除。因此,这个问题不再出现在上述场景中。

(BZ#1847837, BZ#1853964)

不再会因为缺少熵导致引导过程失败

在以前的版本中,会因为缺少熵引导过程失败。现在,使用一种更好的机制来允许内核在引导过程早期收集熵,这不依赖于任何特定的硬件中断。在这个版本中,确保有足够的熵来保证早期引导时随机生成安全,从而解决了这个问题。在这个版本中,可以防止 kickstart 超时或者引导速度慢,引导过程可以正常工作。

(BZ#1778762)

使用 kexec 重复重启现在如预期正常工作

在以前的版本中,内核在 Amazon EC2 Nitro 平台上重启过程中,在内核执行路径的 shutdown() 调用过程中不会调用删除模块(rmmod)。因此,使用 kexec 系统调用重复内核重启会导致失败。有了这个更新,问题已通过添加允许安全内核执行的 PCI shutdown() 处理程序解决了。因此,在 Amazon EC2 Nitro 平台上重复使用 kexec 重启不再会失败。

(BZ#1758323)

使用 vPMEM 内存重启作为转储目标现在可以正常工作

在以前的版本中,使用虚拟持久内存(vPMEM)命名空间作为 kdumpfadump 的转储目标导致了 papr_scm 模块取消和重新映射由 vPMEM 支持的内存,并将内存重新添加到其线性映射中。

因此,这个行为触发了对 POWER Hypervisor 的 Hypervisor 调用(HCalls)。因此,这会大大减慢捕获内核引导的速度,并需要很长时间来保存转储文件。在这个版本中解决了这个问题,引导过程可以正常工作。

(BZ#1792125)

尝试将 ICE 驱动程序 NIC 端口添加到模式 5 bonding master 接口不再失败

在以前的版本中,试图将 ICE 驱动程序 NIC 端口添加到模式 5(balance-tlb)绑定 master 接口会导致一个错误 Master 'bond0',Slave 'ens1f0': Error: Enslave failed。因此,会出现将 NIC 端口添加到绑定 master 接口中断失败的问题。在这个版本中解决了这个问题,添加接口不会失败。

(BZ#1791664)

cxgb4 驱动程序不再导致 kdump 内核崩溃

在以前的版本中,在尝试在 vmcore 文件中保存信息的过程中,kdump 内核会崩溃。因此,cxgb4 驱动程序会阻止 kdump 内核保存为以后进行分析的内核。要临时解决这个问题,在 kdump 内核命令行中添加 novmcoredd 参数以允许保存内核文件。

随着 RHSA-2020:1769 公告的发布,kdump 内核可以正确处理这种情况,不再崩溃。

(BZ#1708456)

5.4.7. 高可用性和集群

当在 Filesystem 代理中使用 GFS2 文件系统时, fast_stop 选项现在默认为 no

在以前的版本中,当与 Filesystem 代理一起使用 GFS2 文件系统时,fast_stop 选项默认为 yes。这个值可能会导致不必要的保护事件,因为 GFS2 文件系统可以需要较长时间卸载。在这个版本中,这个选项被默认为 no。对于所有其他文件系统,默认为 yes

(BZ#1814896)

fence_computefence_evacuate 代理现在以更标准的方式解释 insecure 选项

在以前的版本中, fence_computefence_evacuate 代理可以正常工作,就像默认指定 --insecure 一样。在这个版本中,没有为 compute 或 evacuate 服务使用有效证书时,需要设置 insecure=true,并在通过 CLI 手动运行时使用 --insecure 选项。这与所有其他代理的行为一致。

(BZ#1830776)

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

通过 libdb 优化 CPU 的使用

在以前的版本中对 libdb 数据库的更新会过度消耗 CPU。在这个版本中,CPU 的使用已被优化。

(BZ#1670768)

did_you_mean Ruby gem 不会包括一个带有非商用许可证的文件。

在以前的版本中,did_you_mean gem 包括在带有非商用可许证文件的 ruby:2.5 模块流中。在这个版本中,删除了受影响的文件。

(BZ#1846113)

nginx 现在可以通过 PKCS#11 URI 从硬件安全令牌加载服务器证书

nginx web 服务器的 ssl_certificate 指令支持直接从 PKCS#11 模块的硬件安全令牌加载 TLS 服务器证书。在以前的版本中,无法通过 PKCS#11 URI 从硬件安全令牌加载服务器证书。

(BZ#1668717)

5.4.9. 编译器和开发工具

当加载使用 DT_FILTER 并有一个构造器的共享库时,glibc 动态加载程序不再会失败

在这个更新之前,作为过滤器的共享对象的动态加载程序实现中的一个缺陷导致了动态加载程序在加载使用过滤器并有一个构造器的共享库时失败。有了这个版本,过滤器的动态加载程序实现(DT_FILTER)已被修复,能够正确处理此类共享库。因此,在上面提到的场景中,这个动态装载程序可以正常工作。

(BZ#1812756)

glibc 现在可以从 getmntent () 列表中删除伪挂载

内核在向用户空间公开的表格中包括 automount 伪条目。因此,使用 getmntent() API 的程序会在列表中看到常规挂载和这些伪挂载。pseudo-mounts 与实际装载不对应,也不包含有效信息。

在这个版本中,如果挂载条目在 automount (8) 配置中有 ignore 挂载选项, glibc 库现在会从 getmntent() 列表中删除这些伪挂载。预期前面的行为的程序必须使用不同的 API。

(BZ#1743445)

movv1qi 模式不再会在 IBM Z 的自动验证代码中造成错误。

在以前的版本中,movv1qi 模式给出错误的加载指令。因此,当自动vectorization 生效时,可能会在 IBM Z 系统中出现错误。在这个版本中解决了 movv1qi 模式的问题,因此代码可以被编译并正常运行。

(BZ#1784758)

PAPI_event_name_to_code() 现在可以在多个线程中正常工作

在以前的版本中,PAPI 内部代码无法正确处理线程协调。因此,当多个线程使用 PAPI_event_name_to_code() 操作时,竞争条件发生,操作会失败。这个版本改进了对 PAPI 内部代码中多个线程的处理。因此,使用 PAPI_event_name_to_code() 操作的多线程代码现在可以正常工作。

(BZ#1807346)

提高了 IBM Power 系统上的 glibc 数学功能的性能

在以前的版本中,glibc 数学函数在 IBM Power Systems 上执行不必要的浮点状态更新和系统调用,这对性能造成了负面影响。这个版本删除了不必要的浮动点状态更新,并改进了以下的实现 ceil(), ceilf(), fegetmode(), fesetmode(), fesetenv(), fegetexcept(), feenableexcept(), fedisablexcept(), fegetround() and fesetround()。因此, math 库的性能在 IBM Power Systems 上都有改进。

(BZ#1783303)

现在 IBM Power 支持内存保护密钥

在 IBM Power 系统上,内存保护密钥接口 pkey_setpkey_get 之前是 stub 功能,因此会失败。这个更新实现了接口,因此,GNU C 库(glibc)现在在 IBM Power 系统上支持内存保护密钥。

请注意,内存保护密钥目前需要基于哈希的内存管理单元(MMU),因此您可能需要使用 disable_radix 内核参数启动某些系统。

(BZ#1642150)

Papi-testsuitepapi-devel 现在安装所需的 papi-libs 软件包

在以前的版本中,papi-testsuitepapi-devel RPM 软件包没有声明依赖匹配的 papi-libs 软件包。因此,测试无法运行,开发人员没有为其应用程序提供的 papi 共享库所需的版本。

在这个版本中,当用户安装 papi-testsuitepapi-devel 软件包时,还会安装 papi-libs 软件包。因此,papi-testsuite 现在有允许测试运行的正确的库,使用 papi-devel 的开发人员将其可执行文件与适当的 papi 共享库版本进行连接。

(BZ#1664056)

为多个构架安装 lldb 软件包不再会导致文件冲突

之前,lldb 软件包在架构独立位置安装与构架相关的文件。因此,在 32 位和 64 位版本中安装软件包会导致文件冲突。这个更新会将文件打包成正确的体系独立位置。因此,在以上场景中安装 lldb 可以成功完成。

(BZ#1841073)

getaddrinfo 现在可以正确地处理内存分配失败

之前,在内存分配失败后,GNU C 库 glibcgetaddrinfo 功能不会释放内部解析器上下文。因此,getaddrinfo 无法在调用线程的剩余生命周期内重新载入 /etc/resolv.conf 文件,从而导致内存泄漏。

这个版本使用解析程序上下文的额外发行版本操作修改错误处理路径。因此, getaddrinfo 会根据新的配置值重新载入 /etc/resolv.conf,即使内存分配失败也是如此。

(BZ#1810146)

glibc 避免了 IFUNC 解析顺序导致的某些故障

之前,GNU C 库 glibclibrtlibpthread 库的实现包含以下功能的间接功能(IFUNC)解析程序: clock_gettime, clock_getcpuclockidclock_nanosleepclock_settimevfork。在某些情况下,IFUNC 解析器可以在 librtlibpthread 库被重新定位前执行。因此,在早期程序启动时,应用程序会在 glibc 动态加载程序中失败。

在这个版本中,这些功能的实现被移到 glibclibc 组件中,这可以防止上面描述的问题发生。

(BZ#1748197)

pthread_create 过程中不再发生伪装失败

在以前的版本中,glibc 动态加载程序不会回滚对内部线程本地存储(TLS)模块 ID 计数器的更改。因此,dlopen 功能在某些方面失败后,pthread_create 函数中的错误可能会发生。在这个版本中, glibc 动态加载程序会在特定故障无法再发生时更新 TLS 模块 ID 计数器。因此,不会再出现问题。

(BZ#1774115)

glibc 现在使用 nss_db为 32 位应用程序安装正确的依赖软件包

在以前的版本中, nss_db.x86_64 软件包没有声明依赖 nss_db.i686 软件包。因此,自动安装不会在系统中安装 nss_db.i686,尽管安装了 32 位环境 glibc.i686。因此,使用 nss_db 的 32 位应用程序无法执行准确的用户数据库查找,而同时设置的 64 位应用程序可以正常工作。

在这个版本中,glibc 软件包现在有弱的依赖关系,在 glibc.i686nss_db 都在系统上安装时,会触发 nss_db.i686 软件包的安装。因此,使用 nss_db 的 32 位应用程序现在可以正常工作,即使系统管理员还没有显式安装 nss_db.i686 软件包。

(BZ#1807824)

使用 Odia 语言更新的glibc 语言信息

以前称为 Orissa 的印度州已改为 Odisha,其官方语言的名称已从 Oriya 改为 Odia。在这个版本中, glibc 区域信息会显示语言的新名称。

(BZ#1757354)

LLVM 子软件包现在在与架构相关的位置安装 arch-dependent 文件

在以前的版本中,LLVM 子软件包在 arch 独立位置安装 arch-dependent 文件。这会导致在安装 32 和 64 位 LLVM 版本时出现冲突。在这个版本中,软件包文件可以被正确地安装在与架构相关的位置,从而避免了版本冲突。

(BZ#1820319)

密码和组查找在 glibc中不再失败

在以前的版本中,在处理密码和组条目时,glibc 库的 nss_compat 模块会用错误的代码覆盖 errno 状态。因此,应用程序不会按预期调整缓冲区的大小,从而导致密码和组查找失败。这个更新解决了这个问题,现在查找可以按预期完成。

(BZ#1836867)

5.4.10. Identity Management

SSSD 不再默认下载带有通配符字符的每个规则

在以前的版本中,默认情况下 ldap_sudo_include_regexp 选项被错误地设定为 true。当 SSSD 运行或者更新 SSSD 规则后,SSSD 会下载 sudoHost 属性中包含通配符字符(*)的所有规则。这个更新解决了 bug ,ldap_sudo_include_regexp 选项默认会被正确设置为 false。因此,上面描述的问题不再发生。

(BZ#1827615)

krb5 现在是唯一需要的加密类型

在以前的版本中,如果没有设置 default_tgs_enctypesdefault_tkt_enctypes 属性,在 /etc/krb5.conf 文件中的 permitted_enctypes 变量指定的允许的加密类型不会应用到默认的加密类型。因此,Kerberos 客户端可以请求已弃用的密码套件,如 RC4 ,这可能会导致其他进程失败。有了这个更新,permitted_enctypes 变量中指定的加密类型也会应用到默认的加密类型,并且只请求允许的加密类型。

RC4 密码套件已在 RHEL 8 中被弃用,其是 AD 林中活动目录(AD)域之间用户、服务和信任的默认加密类型。

(BZ#1791062)

KDC 现在从 LDAP 后端正确强制使用密码生命周期策略

在以前的版本中,非 IPA Kerberos 分发中心(KDC)无法确保最大密码生存期,因为 Kerberos LDAP 后端错误地强制执行密码策略。在这个版本中,Kerberos LDAP 后端已被修复,密码生命周期可以正常工作。

(BZ#1784655)

使用 SSSD 发送到 AD 客户端的密码过期通知

在以前的版本中,使用 SSSD 的 Active Directory 客户端(非 IdM)不会发送密码过期通知,因为 SSSD 界面最近更改了获取 Kerberos 凭证。

Kerberos 界面已更新,现在正确发送过期通知。

(BZ#1820311)

使用间接 COS 定义时目录服务器不再泄漏内存

在以前的版本中,在处理一个间接 Class Of Service (COS) 定义后, Directory Server 会在每个使用间接 COS 定义的搜索操作中泄漏内存。在这个版本中, Directory 服务器会在处理后释放所有与数据库条目关联的内部 COS 结构。因此,当使用间接 COS 定义时,服务器不会再泄漏内存。

(BZ#1816862)

现在添加 AD 用户的 ID 覆盖可以在 IdM Web UI 中正常工作

在以前的版本中,当使用 IdM Web UI 时,为了对管理角色授予访问权限,将活动目录(AD)用户的 ID 覆盖添加到默认信任视图中的身份管理(IdM)组中会失败。在这个版本中,这个程序错误已被解决。现在,在这种情况下,您可以使用 Web UI 和 IdM 命令行界面(CLI)。

(BZ#1651577)

在软件包安装过程, FreeRADIUS 不再生成证书

在以前的版本中,FreeRADIUS 会在软件包安装过程中生成证书,这会产生以下问题:

  • 如果使用 Kickstart 安装 FreeRADIUS,则可能会在系统中的熵不足时生成证书,从而导致安装失败或者较少的安全证书。
  • 很难将软件包构建为镜像的一部分,如容器,因为软件包安装是在构建器机器上而不是目标机器上进行。从镜像生成的所有实例都有相同的证书信息。
  • 最终用户很难在其环境中生成一个简单的虚拟机,因为证书必须被删除并手动重新生成。

在这个版本中,FreeRADIUS 安装不再生成默认的自签名 CA 证书,也不会生成从属 CA 证书。当通过 systemd 启动 FreeRADIUS 时:

  • 如果缺少所有必需的证书,则生成一组默认证书。
  • 如果存在一个或多个预期证书,则不会生成新证书。

(BZ#1672285)

FreeRADIUS 现在生成与 FIPS 兼容的 Diffie-Hellman 参数

由于新的 FIPS 要求不允许 openssl 通过 dhparam 生成 Diffie-Hellman(dh) 参数,所以从 FreeRADIUS bootstrap 脚本和文件中删除了 dh 参数生成, RFC3526-group-18-8192.dhparam 包含在所有系统的 FreeRADIUS 软件包中,从而在 FIPS 模式下启用 FreeRADIUS。

请注意:您可以自定义 /etc/raddb/certs/bootstrap/etc/raddb/certs/Makefile,以便在需要时恢复 DH 参数生成。

(BZ#1859527)

更新 Healthcheck 现在可以正确地更新 ipa-healthcheck-coreipa-healthcheck

在以前的版本中,输入 yum update healthcheck 不会更新 ipa-healthcheck 软件包,而是使用 ipa-healthcheck-core 软件包替换。因此,ipa-healthcheck 命令在更新后无法正常工作。

在这个版本中,修正了这个 bug,更新 ipa-healthcheck 软件包可以正确地更新 ipa-healthcheck 软件包和 ipa-healthcheck-core 软件包。因此,在更新后,Healthcheck 工具可以正常工作。

(BZ#1852244)

5.4.11. 图形基础结构

带有混合 Nvidia GPU 的笔记本电脑现在可以成功恢复挂起

在以前的版本中, nouveau 图形驱动程序有时无法在某些笔记本电脑中使用节电模式的混合 Nvidia GPU。因此,笔记本电脑无法恢复挂起。

在这个版本中,修正了 Runtime Power Management(runpm)系统里的几个问题。因此,带有混合图形的笔记本电脑现在可以成功恢复挂起。

(JIRA:RHELPLAN-57572)

5.4.12. 虚拟化

使用默认 CPU 模式迁移虚拟机现在可以更可靠

在以前的版本中,如果创建虚拟机(VM)时没有指定 CPU 型号,QEMU 会使用 libvirt 服务无法看到的默认型号。因此,可以将虚拟机迁移到不支持虚拟机的默认 CPU 模型的主机上,这有时会导致迁移后客户端操作系统中的崩溃和错误行为。

在这个版本中, libvirt 在虚拟机 XML 配置中明确使用 qemu64 模式作为默认型号。因此,如果用户尝试将使用默认 CPU 型号的虚拟机迁移到不支持该型号的主机中, libvirt 会正确地生成出错信息。

但请注意,红帽强烈建议您为虚拟机使用特定的 CPU 型号。

(JIRA:RHELPLAN-45906)

5.4.13. 容器

关于 Podman 支持 FIPS 的备注

联邦信息处理标准(FIPS)要求使用经过认证的模块。在以前的版本中,Podman 通过在启动时启用正确的标记,来在容器中正确地安装经过认证的模块。但是,在此发行版本中,Podman 没有正确设置系统以 FIPS 系统范围加密形式提供的附加应用程序助手。尽管经过认证的模块不需要设置系统范围的加密策略,但它确实提高了应用程序以兼容方式使用加密模块的能力。要临时解决这个问题,请在任何其他应用程序代码被执行前,更改容器以运行 update-crypto-policies --set FIPS 命令。在这个版本中不再需要 update-crypto-policies --set FIPS 命令。

(BZ#1804193)