查找 Linux 机器的架构和版本
在对现有Linux服务器进行审计时,最好的第一步是找出正在运行的发行版以及服务器是运行32位还是64位架构。
要找出服务器正在运行的架构,您可以运行uname命令,该命令将打印出某些系统信息。这必须与-a标志一起提供,以便打印出尽可能多的信息。
uname-a
这将在Ubuntu系统上打印出类似于以下内容的行。
Linuxvlad3.2.0-23-generic#36-UbuntuSMPTueApr1020:39:51UTC2012x86_64x86_64x86_64GNU/Linux
这可以一点一点地分解,并将包含以下信息。
Linux-这是内核名称。这也可以使用-s或--kernel-name标志自行打印。
vlad-这是网络节点主机名,也可以使用“主机名”命令返回。使用-n或--nodename标志打印。
3.2.0-23-generic-这是内核版本。使用-r或--kernel-release标志打印。
#36-UbuntuSMPTueApr1020:39:51UTC2012-这是内核版本。使用-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
在Ubuntu12.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"
这是在CentOS6.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的符号链接。