确定 Redhat Linux 版本

19

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

以下是我所阅读到的:

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

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

即使是 lsb_release -a 命令也会读取 /etc/redhat-release 文件。


11
这并不是一道棘手的问题。RedHat将版本信息放在/etc/redhat-release文件中。如果有人篡改该文件,那么你就是一个糟糕的系统管理员,因为实际上除了root以外,没有人应该能够更改该文件。 - Chris Eberle
1
同意,我只是想找出任何可能性,并尝试排除所有可能性。 - Satish
1
将机器的root访问权限交给某人就像是将钥匙交给你家的某人一样。你只会把钥匙交给你信任的人,为什么无法相信那些获得root访问权限的人不会对/etc/redhat-release中的内容做出任何不当行为呢?如果你不能这样相信,那么你也不能确定运行ls不会运行rm -rf ~/* - ajp15243
我明白你想说什么了!干杯! - Satish
如果你担心有恶作剧甚至恶意的同事,那么最好与你们的安全团队沟通。他们很可能拥有所有登录和登录来源的日志,以及登录期间运行的命令记录。 - ajp15243
显示剩余3条评论
9个回答

21

尝试执行此命令:

rpm -qa | grep release

例如,在我的机器上,我获得了以下内容:

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

(该内容可能是系统版本信息)

我可以安装任何版本的 release RPM。 - Satish

17
如果“任何人”都可以访问您的计算机以更改/ etc / redhat-release或安装备用内核,那么您面临的问题可能比确定系统的redhat版本更大。只需使用由/ etc / redhat-release指出的值,甚至更好地使用lsb_release的输出,因为这正是它们的目的所在,以便于可移植性。如果“任何人”可以对您的系统进行任何操作,那么根本没有其他机会。

1
@Satish,这个回答的本质和其他人的评论都是:你应该信任(或者至少能够信任) /etc/redhat-release 文件内容和 lsb_release。如果你认为这些输出不可信,因为“任何人都可以篡改那个文件”,那么你的整个系统都是不可信的,因为编辑那个文件需要系统的 root 访问权限(如果有人更改了那个文件使它变得错误,谁又能说他们没有做其他坏事呢?)。要么你相信它是正确的,要么如果你不能信任那些拥有 root 访问权限的人,就需要重新考虑你的系统安全性。 - ajp15243
@Satish:确定,但它将在任何符合LSB标准的系统中阅读/wherever/whatever_file或运行/wherever/whatever_program,这就是我所说的更好的“可移植性”。 - mikyra
明白了,伙计们!没有 root,没有篡改。 - Satish

5
您可以在最新的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
注意:自从2012年7月起/etc/os-release 应该成为查找任何操作系统版本的标准文件。
  • 它让应用程序开发者不必检查多个版本文件来查看他们正在运行的发行版。
  • 它提供了一个“漂亮”的名称(即向用户显示的名称)和可机器解析的版本/操作系统标识符(即用于构建系统)。
  • 如果需要,它是可扩展的,可以轻松学习新的字段。
请参阅其man页面
在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)"

1
很遗憾,这似乎在RHEL 6.x上不起作用,即使安装了最新的补丁也是如此。该文件在该版本中不存在,而且可能在更旧的版本中也不存在。 - ralhei

2

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

cat /etc/issue

Red Hat 6的示例::

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

$ 

1
最简单的命令是:

lsb_release -d

0

对于今天或未来阅读此文的人:
正在运行的内核版本是您的RedHat版本。可能已安装其他版本,但未运行。
因此,如果机器上安装了RedHat 5.1、5.2和5.x,则一次只能运行1个版本。这是在系统启动时引导的版本。要确定实际运行的版本,请使用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


0
尝试
uname -r

或者

cat /etc/issue

适用于最近的Linux机器

lsb_release -d

0

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

顺便说一下,我同意以上评论者的看法,如果任何人可以篡改标准的/etc/redhat-release文件或其他系统配置文件,那么你了解版本的方式就是你最不用担心的问题。

另外,自RHEL 7.X版本以来,您还可以尝试:hostnamectl | grep 'Operating System'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接