全部博文(51)
分类: 系统运维
2015-10-09 11:39:55
1./var/account/pacct文件(非文本文件,每天1个保留7天轮替时间为每日4:02)
用于查找由于用户操作而引发的系统或应用的故障原因。
linux默认不启动该进程统计程序。但只要系统负荷和系统硬盘空间允许,可以使用该日志文件。
启动进程统计程序的命令:accton /var/account/pacct
停止进程统计程序的命令: accton
pacct日志文件记录了历史上曾经发生过的所有用户(含系统和应用)的所有操作(程序名【注:内部命令不记录,bash(linux默认的shell)常用的内部命令有:cd,kill等,全部内部命令可由命令man bash得到】,用户名,登录终端,命令运行时间段,日期和时间),结合last命令输出的终端所在的IP地址,我们就可知道用户在什么时间,从哪里登录,执行了什么命令,命令运行的时间长度。
遗憾的是没有操作命令的参数,因为该程序的只是为进程统计而设。
检查当前的命令(无参数)操作历史:
#lastcomm –f /var/account/pacct (如文件很大可使用登录工具的log来保存)
ftp_get.php S sms __ 0.01 secs Fri May 21 15:04
smppxmzd F root __ 0.00 secs Fri May 21 15:04
crond SF root __ 0.00 secs Fri May 21 15:04
sh S sms __ 0.00 secs Fri May 21 15:04
ping S sms __ 0.00 secs Fri May 21 15:04
crond SF root __ 0.00 secs Fri May 21 15:04
sh S sms __ 0.00 secs Fri May 21 15:04
ping S sms __ 0.00 secs Fri May 21 15:04
consoletype root __ 0.00 secs Fri May 21 15:04
cat root __ 0.00 secs Fri May 21 15:04
crond SF root __ 0.00 secs Fri May 21 15:04
sh S sms __ 0.00 secs Fri May 21 15:04
ping S sms __ 0.00 secs Fri May 21 15:04
sgipd F root __ 0.00 secs Fri May 21 15:04
consoletype root __ 0.00 secs Fri May 21 15:04
mv root pts/4 0.00 secs Fri May 21 15:03
ls S root pts/4 0.00 secs Fri May 21 15:03
[root@sms log]#
案例分析:
蓝色部分就是在日期时间May 21 15:03,用户root从终端 pts/4 登录上来,执行了命令“ls”和“mv”。
注意:该“mv”操作如果移走了系统或应用正在使用的目录或文件,则系统就会告警。而维护人员可根据此文件搜索到“mv”的操作者(lastcomm –f /var/account/pacct | grep mv),从而得知移走的内容,快速进行恢复。
检查非当前的命令(无参数)操作历史:
(1) 解压某日的pacct.N.gz
gzip -d /var/account/pacct.N.gz
(2) 查看某日的pacct.N
lastcomm –f /var/account/pacct.N
2./var/log/wtmp(非文本文件,每月1个,保留2月,轮替时间为每月1日)
用于查找用户登录位置和时间及时间段的历史。
该文件记录了所有曾经登录过的用户名,登录源及登录时间段。系统默认保留2个月的记录:当月为wtmp,上月为wtmp.1。我们可使用该文件再配合其他命令来查询人为操作引发的系统故障。该日志文件最大的好处是有登录源信息(IP地址)。
(1) 查询当月用户的登录情况:
[root@ftpnode2 log]# last
root pts/3 172.16.80.140 Fri May 21 10:34 still logged in
ticketer pts/1 192.168.71.145 Fri May 21 10:25 still logged in
。
。
ticketer pts/1 172.16.80.28 Fri May 21 09:00 - 09:09 (00:09)
ticketer pts/3 192.168.71.145 Fri May 7 10:05 - 14:00 (3+03:55)
ticketer pts/4 192.168.71.145 Fri May 7 09:34 - 11:46 (02:11)
ticketer pts/3 172.16.80.28 Fri May 7 09:10 - 09:47 (00:37)
wtmp begins Wed May 5 09:34:25 2010
[root@ftpnode2 log]#
注:对于“still logged in”的用户,可使用命令w来查询该用户当前正在执行的命令;对于已离线的用户,只能根据命令history来查询该用户曾经执行过的命令,但无时间戳。
(2) 查询上月用户登录情况:
[root@ftpnode2 log]#last –f /var/log/wtmp.1
ticketer pts/7 192.168.71.145 Fri Apr 30 10:30 - 13:23 (02:52)
ticketer pts/6 192.168.71.145 Fri Apr 30 10:27 - 10:49 (00:21)
ticketer pts/5 192.168.71.145 Fri Apr 30 10:04 - 12:26 (02:22)
。
。
ticketer pts/1 172.16.80.28 Thu Apr 8 09:24 - 11:36 (02:11)
ticketer pts/1 172.16.80.28 Wed Apr 7 08:57 - 09:01 (00:04)
ticketer pts/1 172.16.80.28 Tue Apr 6 13:14 - 15:26 (02:11)
ticketer pts/1 192.168.71.145 Tue Apr 6 08:39 - 11:01 (02:22)
ticketer pts/1 172.16.80.28 Fri Apr 2 08:53 - 11:05 (02:11)
ticketer pts/1 172.16.80.28 Thu Apr 1 10:25 - 10:30 (00:04)
wtmp.1 begins Thu Apr 1 10:25:34 2010
[root@ftpnode2 log]#
3./home/user_name/.bash_history(文本文件;root用户特殊:/root/.bash_history)
用于查询用户曾经执行过的完整命令,但没有时间点。
这条命令最大的好处是可以看到带有参数的完整命令,这可以弥补/var/account/pacct文件的缺憾。
切换到该用户,然后使用history命令就可列出用户曾经的操作:
su root
[root@nbu_jc_media log]#history
985 telnet 172.16.80.21
986 ssh 172.16.80.78
987 more /var/log/spooler
988 df -k
989 telnet 172.16.80.21
990 ssh 172.16.80.78
991 more /var/log/spooler
992 df -k
993 telnet 172.16.80.21
994 ssh 172.16.80.78
995 more /var/log/spooler
996 df -k
997 telnet 172.16.80.21
998 ssh 172.16.80.78
999 w
1000 history
[root@nbu_jc_media ~]#
注:最大序号的记录为最新的记录,linux默认保存1000条记录(/etc/profile)。
4./var/run/utmp(非文本文件,)
用于查询在线用户正在执行的命令(完整命令)。
该文件只记录当前在线用户的当前操作命令。
[root@nbu_jc_media log]# w
16:05:30 up 40 days, 3:17, 4 users, load average: 0.07, 0.21, 0.11
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/3 192.168.71.145 14:35 0.00s 0.02s 0.00s cd /etc
root :0 - 28Apr10 ?xdm? 6:57m 0.25s /usr/bin/gnome-session
root pts/1 :0.0 10May10 10days 0.03s 0.01s ssh 172.16.80.26
root pts/2 :0.0 10May10 10days 0.03s 0.03s bash
[root@nbu_jc_media log]#
案例分析:
蓝色行显示:当前用户root,在时间14:35从192.168.71.145登录进来,当前执行的操作是cd /etc命令。
5./var/log/lastlog(非文本文件)
用于查询用户最后一次的登录记录。
该文件只记录用户最后一次的登录情况。
[root@ftpnode2 log]# lastlog
Username Port From Latest
root pts/3 172.16.80.140 Fri May 21 10:34:38 +0800 2010
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
ticketer pts/1 192.168.71.145 Fri May 21 10:25:10 +0800 2010
[root@ftpnode2 log]#
综合使用上述5种方法中的几种,我们就能达到查询用户详细的操作历史记录(不超过7天)和登录记录(不超过2个月)的基本要求。而这些记录将有助于我们找到系统和应用故障的发生源。