学习一个陌生系统的命令


19

您登录到一个陌生的UNIX或Linux系统(以root用户身份)。您会运行哪些命令来确定自己的方向并弄清楚自己所使用的系统是哪种?您如何确定正在使用哪种类型的硬件,正在运行哪种类型的操作系统以及有关权限和安全性的当前情况?

您键入的第一条命令和第二条命令是什么?


3
我会用uname -a那么apropos whatever 是你的朋友。
fd0

1
nmap -A -T4 localhost还可以给您一些有用的信息
seumasmac

@seumasmac netstat比映射本地计算机更好,更高效。
安德烈·伯瑞

@AndréBorienmap和netstat产生完全不同的结果。因此,将它们与效率(不管是哪种效率)进行比较没有多大意义。
moooeeeep 2015年

@AndréBorie我原本打算在末尾放一个:)。我一直在自己的一台机器上检查安全性,拿着nmap锤子的时候localhost突然看起来像钉子。但是后来我意识到它确实提供了一些有趣的信息,因此我把它作为一个半认真的建议。
seumasmac

Answers:


22

一个两用的问题!软件考古学家或邪恶的黑客都可以使用该问题的答案!现在,我是哪个?

我总是习惯使用ps -efvs ps -augxww来找出我在做什么。对于BSD和旧的SunOS计算机,Linux和System V盒倾向于“ -ef”和“ -augxww”错误,反之亦然。的输出ps也会让您知道很多。

如果您可以以root用户身份登录,并且它是一台Linux计算机,则应该执行- lsusb并且lspci,这将使您80%地了解硬件状况。dmesg | more可以帮助您了解几乎所有问题。

它开始被逐步淘汰,但是这样做ifconfig -a通常可以告诉您很多有关网络接口和网络的信息。运行mii-tool和/或ethtoolifconfig输出中看到的类似于电缆以太网的接口上也可以提供一些信息。

Runnin ip routenetstat -r可以提供有关Internet协议路由的信息,也可以提供有关正在使用的网络接口的信息。

一个mount调用可以告诉你的磁盘(S)和他们是如何安装。

运行uptime,然后last | more可以告诉您有关当前维护状态的信息。隐喻地说,正常运行时间超过100天可能意味着“是时候更换机油和液体了”。跑步who也是

查看/etc/resolv.conf/etc/hosts可以告诉您有关该计算机的DNS设置。也许要做nslookup google.comdig bing.com看看DNS是否主要起作用。

始终值得观察哪些错误(“未找到命令”)和命令的哪些变体(“ ps -ef”与“ ps augxww”)一起工作,以确定最终导致的Unix,Linux或BSD变体。

C编译器的存在与否以及它的存在位置很重要。做的which cc或更好的,which -a cc找到他们。


我希望netstat -tulpanw获得更多输出,但这确实是一个品味问题。
2015年

lshwLinux下也有。
Shahbaz

mount很乱,findmnt反而很干净。
edmz 2015年

10

cat /etc/*release* 是一个很好的命令,用于概述正在运行的发行版。


9

http://bhami.com/rosetta.html可能很方便查看,否则我通常会在下面/etc(帐户,初始化内容,操作系统风格的提示等)四处浏览,crontab -l并在ps列表中查找需要学习的东西。

同样,“以root用户身份”也非常令人恐惧,因为我必须修复在Linux管理员进行此类调查时将所有Solaris主机名都设置为的系统-f

df也是一个危险的命令,是阻止阻塞I / O的好方法。因此,除非您至少已研究过坐骑或知道可以以某种方式打开另一个会话,否则请不要运行它。

使用很简单的命令(unamecd /etc; lscat$PAGER),直到你找出主机是什么,如果你不熟悉它,检查罗塞塔或承担一些命令或标志的命令之前,请务必阅读man page做什么它做对更流行的系统。


让我感到奇怪的是:是否有一种可靠的方式(暂时)掉入特权较低的环境?还是这不可行,或者不是一个好主意?
Oliphaunt-恢复莫妮卡

1
为什么df危险?除了显示文件系统使用情况之外,是否还有其他系统在执行其他操作?
terdon

1
@terdon内核I / O阻塞,例如在硬盘NFS挂载已关闭的情况下;最好的情况下,您可以以某种方式打开新的会话或终端(在停机期间浪费时间),或者最坏的情况下,这是您在该旧Solaris系统上的唯一控制台,是的……也许它将启动,也许不会,
不好意思

1
如果df挂起,则只需按CTRL-Z即可kill -9。我也遇到了这个问题,对我来说一直很有效。另外,理想情况下,您的坐骑不应该被挂起。我也不认为很多人认为挂起的程序是“危险的”,这就是为什么我认为terdon感到困惑。
布拉奇利,2015年

3
@Bratchley哦,从来没有控制台连接,您无法发送控制字符?嗯,那zmodem手册在哪里,或者哦geez,我们如何将它们通过有问题的Java东西发送给其他有物理访问权限的有问题的东西ah geez?
2015年

5

dmidecode并且lspci通常会让您对系统上运行的硬件有一个很好的了解。如果这是一台服务器,那么通常运行netstat -tlpn将放弃该服务器的用途。df -hP是检查系统上当前存储的好命令。lsb_release -a应该让您知道您正在发行的发行版:

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago

运行last应该让您知道谁在使用该系统。假设您已经合法访问了该服务器,通常您可以向登录该服务器的人员之一询问有关该服务器的更多信息。

对于供应商中立的安全性检查:通常,防火墙通常具有唯一的配置数据,因此运行a iptables -nvL很有用。您还应该检查发行版的pam配置文件,以查看是否仅使用本地用户,或者是否配置为使用ldap / kerberos / winbind / sssd / whatever。

您还可以检查.NET中出现的服务的配置netstat -tlpn。例如,如果看到apache,则可以查看/etc/http/conf/httpd.conf(在RHEL上,/etc/apache2在Ubuntu上),然后尝试查看正在运行的网站。或者,您可以执行a apachectl -S获取所有已配置的虚拟主机的列表。那里有很多粉丝,所以我真正能做的就是以apache为例,只是说要验证守护程序的配置(如果有的话)。

在RHEL上,我还将检查rpm -qa --last | head他们上一次进行系统更新的时间。我还将检查是否通过以下方式启用了SELinux:getenforce


0

其他一些想法:

  • /proc文件系统是否存在可能表明您使用的是 MacFreeBSD还是Linux。
  • 软件包管理因Linux发行版而异。基于Debian的软件很容易使用,例如Deepin,Ubuntu,Mint;Red Hat和Fedora的表现达到了一定程度,但现在Fedora有了DNF ; Arch使用pacman。所以我们可以做这样的事情:ls /usr/bin | grep 'apt\|yum\|pacman'
  • 查看时,某些端口上存在某些服务netstat -tulpan。可能是sshdWeb服务器ftp

请注意,系统上存在给定的可执行文件实际上并不意味着任何事情。例如,Debian有一个yum软件包。ssh服务器的存在如何指示系统?您可以sshd在几乎所有内容上找到AFAIK 。
terdon

@terdon是。我只是从一个新的sysadmin的角度来解决这个问题的,您会被告知“我们的Linux机顶盒已经过了,请为此做点事情”。到那时,您可能会问:它是否具有远程访问权限?远程访问是否已加强?它具有我熟悉的软件包管理,还是必须学习新的软件包管理器?Bruce Ediger已经涵盖了目标,但不一定确定您要获得什么操作系统,但是我将重点更多地放在研究系统本身上
Sergiy Kolodyazhnyy 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.