Linux日志管理五大命令详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

从Ext到Ext2,从Ext2再到Ext3,乃至以后的Ext4或者更高版本,Linux系统历来以强大、丰富和完整的日志系统著称。通过管理日志,可以清晰地了解系统的运行状况,也能从各种蛛丝马迹中发现入侵和快速地阻止入侵。本文是有关Linux系统全方位管理的第四部分,讲述Linux日志管理方面的事项。前面三个部分分别为:文件系统管理Linux进程管理,以及用户管理

(更多详细内容请关注Linux系统全方位管理专题:http://os.51cto.com/art/201009/228849.htm  )

日志主要的功能有:审计和监测。它还可以实时的监测系统状态,监测和追踪侵入者等等。成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux中提供了异常日志,并且日志的细节是可配置的。Linux日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。Linux日志存储在/var/log目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限就可以让其他人可读。在Linux系统中,有四类主要的日志:

◆连接时间日志:由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

◆进程统计:由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。

◆错误日志:由syslogd(8)守护程序执行。各种系统守护进程、用户程序和内核通过syslogd(3)守护程序向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。

◆实用程序日志:许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有sudolog。另外,诸如Apache等Http的服务器都有两个日志:access_log(客户端访问日志)以及error_log(服务出错日志)。 FTP服务的日志记录在xferlog文件当中,Linux下邮件传送服务(sendmail)的日志一般存放在maillog文件当中。

utmp、wtmp日志文件是多数Linux日志子系统的关键,它保存了用户登录进入和退出的记录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出记录在文件wtmp中;数据交换、关机以及重启的机器信息也都记录在wtmp文件中。所有的记录都包含时间戳。时间戳对于日志来说非常重要,因为很多攻击行为分析都与时间有极大的关系。这些文件在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,用户可以根据实际情况来对这些文件进行命名和配置使用。

utmp文件被各种命令文件使用,包括who、w、users和finger。而wtmp文件被程序last和ac使用。

wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。

1.who命令

who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。使用该命令,系统管理员可以查看当前系统存在哪些不法用户,从而对其进行审计和处理。例如:运行who命令显示如下所示:

# who
root     pts/1        2010-02-22 13:02 (:0.0)
root     pts/2        2010-02-22 15:57 (:0.0)
root     pts/3        2010-02-22 15:57 (:0.0)

如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。例如:运行该命令如下所示:

# who /var/log/wtmp
root     :0           2010-01-24 21:47
root     pts/1        2010-01-24 21:47 (:0.0)
root     :0           2010-02-20 19:36
root     pts/1        2010-02-20 19:36 (:0.0)
root     :0           2010-02-21 15:21
root     pts/1        2010-02-21 15:56 (:0.0)
root     pts/2        2010-02-21 16:03 (:0.0)
root     :0           2010-02-22 13:01
root     pts/1        2010-02-22 13:02 (:0.0)
root     pts/2        2010-02-22 15:57 (:0.0)
root     pts/3        2010-02-22 15:57 (:0.0)

2.users命令

users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。运行该命令将如下所示:

# users
root root root

3.last命令

last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。系统管理员可以周期性地对这些用户的登录情况进行审计和考核,从而发现起中存在的问题,确定不法用户,并进行处理。运行该命令,如下所示:

# last
root     pts/3        :0.0             Mon Feb 22 15:57   still logged in  
root     pts/2        :0.0             Mon Feb 22 15:57   still logged in  
root     pts/1        :0.0             Mon Feb 22 13:02   still logged in  
root     :0                            Mon Feb 22 13:01   still logged in  
reboot   system boot  2.6.18-8.el5     Mon Feb 22 12:56          (03:02)   
root     pts/2        :0.0             Sun Feb 21 16:03 - down   (02:37)   
root     pts/1        :0.0             Sun Feb 21 15:56 - down   (02:45)   
root     :0                            Sun Feb 21 15:21 - down   (03:20)   
reboot   system boot  2.6.18-8.el5     Sun Feb 21 15:19          (03:22)   
root     pts/1        :0.0             Sat Feb 20 19:36 - down   (01:50)   
root     :0                            Sat Feb 20 19:36 - down   (01:51)   
reboot   system boot  2.6.18-8.el5     Sat Feb 20 19:34          (01:53)   
root     pts/1        :0.0             Sun Jan 24 21:47 - down   (00:02)   
root     :0                            Sun Jan 24 21:47 - down   (00:02)   
reboot   system boot  2.6.18-8.el5     Sun Jan 24 21:45          (00:05)   
reboot   system boot  2.6.18-8.el5     Sun Jan 24 21:41          (00:02)   
 
wtmp begins Sun Jan 24 21:41:03 2010

读者可以看到,使用上述命令显示的信息太多,区分度很小。所以,可以通过指明用户来显示其登录信息即可。例如:使用last reoot来显示reboot的历史登录信息,则如下所示:

# last reboot
reboot   system boot  2.6.18-8.el5     Mon Feb 22 12:56          (03:07)   
reboot   system boot  2.6.18-8.el5     Sun Feb 21 15:19          (03:22)   
reboot   system boot  2.6.18-8.el5     Sat Feb 20 19:34          (01:53)   
reboot   system boot  2.6.18-8.el5     Sun Jan 24 21:45          (00:05)   
reboot   system boot  2.6.18-8.el5     Sun Jan 24 21:41          (00:02)   
 
wtmp begins Sun Jan 24 21:41:03 2010

4.ac命令

ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 18.47,如下所示:

# ac
total       18.47

另外,可加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。

5.lastlog命令

lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令。运行该命令如下所示:

 

google **从未登录过**




















本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/399554,如需转载请自行联系原作者



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Linux
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
159 56
|
18天前
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
96 24
|
10天前
|
Linux
Linux命令的基本格式解析
总的来说,Linux命令的基本格式就像一个食谱,它可以指导你如何使用你的计算机。通过学习和实践,你可以成为一个真正的“计算机厨师”,创造出各种“美味”的命令。
52 15
|
20天前
|
安全 Shell Linux
Linux系统之su命令的基本使用
Linux系统之su命令的基本使用
72 2
Linux系统之su命令的基本使用
|
23天前
|
监控 数据可视化 Java
调试技巧 - 用Linux命令排查Java问题
总的来说,使用Linux命令来排查Java问题,需要一定的实践经验和理论知识。然而,只要我们愿意花时间深入了解这些工具,我们就能够熟练地使用它们来分析和解决问题。此外,这些工具只是帮助我们定位问题,真正解决问题需要我们对Java和JVM有深入的理解,并能够读懂和分析代码。
63 13
|
2月前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
75 19
|
2月前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
74 5
Linux 常用文件查看命令
|
2月前
|
Linux
linux常用命令详细说明以及案例
本文介绍了Linux中几个常用的命令及其用法,包括:`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm -p`(删除目录及内容)和`mv`(移动或重命名文件/目录)。每个命令都配有详细说明、语法格式、常见选项及实用案例,帮助用户更好地理解和使用这些基础命令。内容源自[linux常用命令详细说明以及案例](https://linux.ciilii.com/show/news-285.html)。
|
2月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
3月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
135 24
Linux系统之whereis命令的基本使用