我正在尝试查看我们的服务器是否都已修补,但是这两个 RHEL 服务器上的修补符号让我感到困惑:
hostA$ uname -a
Linux hostA 3.10.0-1062.4.1.el7.x86_64 #1 SMP Wed Sep 25 09:42:57 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux
hostB$ uname -a
Linux hostB 3.10.0-1127.el7.x86_64 #1 SMP Tue Feb 18 16:39:12 EST 2020 x86_64 x86_64 x86_64 GNU/Linux
所以,它们都被修补到了 3.10.0 版本,对吧?使这两个服务器不同的连字符后面的数字有什么意义?
另外,时间戳是什么?那是供应商发布补丁的日期/时间吗?
Linux 3.10.0 与 RHEL 的重度补丁 3.10.0-1127 非常不同。从源代码中阅读 kernel.spec,并查看巨大的更改日志。
那 1127 块是内核 rpms 的发布“编号”。特定于 EL(或任何进行构建的人)而不是上游 kernel.org。鉴于大多数更新修复了安全或功能缺陷,最后一位数字很重要。
时间戳是内核编译的时间。这不是发布日期。测试发生在发布之前。并非所有测试内核都已发布。
用 uname 检查内核不是 Linux 补丁管理。Linux 上的大多数软件都不是内核,从 libc 一直到应用程序。其他一些报告和应用包的方法是必要的。对于 RHEL,这意味着基于 rpm 和 yum 的工具。
大多数包管理器都有一个日志。对于您拥有的 RHEL/CentOS
/var/log/yum.log
和 Debian/Ubuntu:/var/log/apt/history.log
日志还包含所有软件包管理器更改(安装/更新/删除)的时间戳。大多数现代发行版都可以配置为自动更新所有包。您可以指定是否只需要安全更新或所有更新。
还有一些集中式工具可以从 Web 界面管理所有这些更新。
在 Linux 世界中不使用您使用的内涵修补程序。您有内核更新和软件包更新。
可以对内核进行实时修补,但我认为您现在不必担心这一点。实时修补意味着在不重新启动的情况下修复内核中的错误。