查找 Linux 机器的架构和版本

在对现有 Linux 服务器进行审计时,最好的第一步是找出正在运行的发行版以及服务器是运行 32 位还是 64 位架构。

要找出服务器正在运行的架构,您可以运行uname命令,该命令将打印出某些系统信息。这必须与 -a 标志一起提供,以便打印出尽可能多的信息。

uname -a

这将在 Ubuntu 系统上打印出类似于以下内容的行。

Linux vlad 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

这可以一点一点地分解,并将包含以下信息。

  • Linux - 这是内核名称。这也可以使用 -s 或 --kernel-name 标志自行打印。

  • vlad - 这是网络节点主机名,也可以使用“主机名”命令返回。使用 -n 或 --nodename 标志打印。

  • 3.2.0-23-generic - 这是内核版本。使用 -r 或 --kernel-release 标志打印。

  • #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 - 这是内核版本。使用 -v 或 --kernel-version 标志打印。

  • x86_64 - 这是机器硬件名称。使用 -m 或 --machine 标志打印。

  • x86_64 - 这是处理器类型,可以是处理器类型或“未知”。使用 -p 或 --processor 标志打印。

  • x86_64 - 这是硬件平台,可以是硬件平台的类型或“未知”。使用 -i 或 --hardware-platform 标志打印。

  • GNU/Linux - 这是操作系统。使用 -o 或 --operating-system 标志打印。

机器硬件名称和硬件平台用于确定系统架构。在上面的示例中,这是 64 位(由 x86_64 表示)。如果这些值读取 i686 或 i386,则架构为 32 位。

除了使用 'uname -a',另一种方法是使用 'arch' 命令,或者查看文件 /sbin/init 文件的内容。无论哪种方式都可以,但我发现 uname 命令会打印出我需要的信息。

您会从上面注意到我们仍然不知道发行版,尽管我们可以看出它是一个 Ubuntu 盒子。要找出您正在运行的系统的发行版和版本,您可以查看 /etc/ 目录中以“release”结尾的文件。这些文件在每个系统上都不同,因此另一种方法是打印任何以“release”结尾的文件的内容。这将以人类可读的格式打印分发。

cat /etc/*release

您可以通过用双与号 (&&) 分隔来连续运行这两个命令。

$uname -a && cat /etc/*release

在 Ubuntu 12.04 系统上运行上述命令时,您将看到类似于以下内容的输出。

$ uname -a && cat /etc/*release
Linux vlad 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

这是在 CentOS 6.5 服务器上运行上述命令的示例。

$ uname -a && cat /etc/*release
Linux webserver2 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
CentOS release 6.5 (Final)
CentOS release 6.5 (Final)
CentOS release 6.5 (Final)

这三行重复是因为,在 CentOS 中,/etc/redhat-release 和 /etc/system-release 文件实际上是文件 /etc/centos-release 的符号链接。