确定 Redhat Linux 版本

Posted

技术标签:

【中文标题】确定 Redhat Linux 版本【英文标题】:Determine Redhat Linux Version 【发布时间】:2013-02-16 08:31:00 【问题描述】:

如何确定我运行的是哪个RedHat Linux 版本?

这是我读到的:

/etc/redhat-release 文件包含版本,但任何人都可以篡改该文件。 人们说uname命令,但你可以在Redhat上安装任何内核。

如果我正在运行 redhat 5.1,并且有人将其升级为 5.2 或 5.x,那么决定 RedHat 版本的因素是什么?

甚至 lsb_release -a 读取 /etc/redhat-release 文件。

【问题讨论】:

这不是一个棘手的问题。 RedHat 将版本放在/etc/redhat-release 中。如果有人篡改了该文件,那么您就是一个糟糕的系统管理员,因为实际上除了 root 之外没有人应该能够更改该文件。 您为什么想知道正在运行的 RedHat 版本是什么?决定版本的因素取决于您想知道的原因。 (例如,如果您想知道它将报告什么版本,那么您确实想查看/etc/redhat-release。如果您想知道它是否在其发布流中运行最新内核,那么您 想要内核版本。) 同意,无论如何我只是想弄清楚.. 并试图清除所有可能性。 我的安全团队问这个问题,不是我。他们想确认所有的可能性.. 授予某人对机器的 root 访问权限就像给他们您房子的钥匙或其他东西一样。你不会只把你的房子钥匙给你信任的人吗?为什么你不能相信那些被你授予root访问权限的人/etc/redhat-release的内容?如果你不能,那么你也不能确定运行ls 不会运行rm -rf ~/* 【参考方案1】:

试试这个命令:

rpm -qa | grep release

例如在我的机器上我得到了这个

redhat-release-workstation-6Workstation-6.4.0.4.el6.x86_64

【讨论】:

我可以安装任何版本的release RPM【参考方案2】:

如果“任何人”对您的机器具有 root 访问权限以更改 /etc/redhat-release 或安装备用内核,那么您很可能比确定系统的 redhat 版本遇到更大的麻烦。

只需使用 /etc/redhat-release 指出的值,或者在可移植性方面甚至更好,使用 lsb_release 的输出,因为这正是它们的目的。

“任何人”都可以对您的系统做任何事情,因此根本没有其他机会。

【讨论】:

@Satish,这个答案以及其他所有人的 cmets 的本质是您应该信任(或至少能够信任)/etc/redhat-release 文件内容和lsb_release。如果您认为这些输出是不可信的,因为“任何人都可以篡改该文件”,那么您的整个系统都是不可信的,因为编辑该文件需要对系统的 root 访问权限(如果有人将该文件更改为错误的,谁会说他们没有'不要做其他坏事?)。要么你相信它是正确的,要么你需要重新考虑你的系统的安全性,如果你不能信任那些具有 root 访问权限的人。 @Satish: affarmitive 但它会读取 /wherever/whatever_file 或运行 /wherever/whatever_program any LSB 兼容系统,这就是我所说的更好的“可移植性”跨度> 知道了.. 伙计们!无根无回火【参考方案3】:

您可以在最近的 linux 发行版上使用 lsb_release 命令。如果您发出:

lsb_release -i -r

或者

uname -r

并映射输出。 2.6.9 内核是 RHEL4,2.6.18 内核是 RHEL5。如有必要,您可以将完整版本映射到 Red Hat 的特定更新版本(即 2.6.9-89 是 RHEL5 U4)。

【讨论】:

【参考方案4】:

注意:since July 2012、/etc/os-release 应该是用于查找任何操作系统版本的标准文件。

它使只想了解他们正在运行的发行版的应用程序开发人员无需检查大量单独的发布文件。 它提供了一个“漂亮”的名称(即向用户显示的名称)和机器可解析的版本/操作系统标识符(即用于构建系统)。 它是可扩展的,如果需要可以轻松学习新领域。

查看其man page。

Example for RedHat:

# cat /etc/os-release 
NAME="Red Hat Enterprise Linux Server"
VERSION="7.0 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="7.0"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"

【讨论】:

不幸的是,这似乎不适用于 rhel 6.x,即使安装了最新的补丁也不行。该版本不存在该文件,并且可能不存在旧版本。【参考方案5】:

适用于众多 Linux 发行版的技巧:

cat /etc/issue

Red Hat 6 示例

$ cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \m

$ 

【讨论】:

【参考方案6】:

最简单的命令是:

lsb_release -d

【讨论】:

【参考方案7】:

试试

uname -r

cat /etc/issue

对于最近的 linux 机器

lsb_release -d

【讨论】:

【参考方案8】:

对于今天或将来正在阅读本文的人: 正在运行的内核版本是您的 RedHat 版本。可能安装了其他版本,但没有运行。 因此,如果机器上安装了 RedHat 5.1、5.2 和 5.x,一次只能运行 1 个。这是在系统启动 uop 时启动的版本。要确定实际运行的是哪个版本,请使用 uname 命令:uname -r 这将返回内核版本号。 对于 RedHat 5,它将是 2.6.18-[something] RH 5.1 是 2.6.18-53 RH 5.2 是 2.6.18-92 要将内核版本号转换为 Redhat 版本号,请参阅此链接:Red Hat Enterprise Linux Release Dates

【讨论】:

【参考方案9】:

文件/etc/redhat-release 是获取供应商版本(包括5.X)的标准方式。我认为你不应该忽视这种方式。当然,您可以使用其他软件的各种技巧来显示当前的操作系统版本,但无论如何,其中许多都在解析 /etc 文件。如上所述,您可以使用 rpm 查询来获取版本。获取此类信息的另一种方式:rpm -q <vendor-name>-release

顺便说一句,我同意上述评论者的观点,如果有人可以篡改标准的 /etc/redhat-release 文件或其他系统配置文件,那么您了解版本的方式是您的问题最少。

另外从 RHEL 7.X 版本开始你也可以试试hostnamectl | grep 'Operating System'

【讨论】:

以上是关于确定 Redhat Linux 版本的主要内容,如果未能解决你的问题,请参考以下文章

linux下(centos7)docker安装

Linux下搭建RabbitMQ(3.9.8)版本

从 Powershell 确定操作系统版本、Linux 和 Windows

确定 Linux 上运行的是哪个版本的 Mono?

Linux下怎么确定Nginx安装目录

在哪里可以找到 RedHat 的软件包名称和版本?