今天我给大家介绍的是利用psacct来监控登录服务器用户的行为。本次试验在centos6.0下试验:
[root@centos6 ~]# rpm -qa | grep psacct 检查是否已经安装。你可以用yum安装
psacct-6.3.2-63.el6.i686
[root@centos6 ~]# chkconfig –list psacct 检查服务是否自动启动
psacct 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@centos6 ~]# chkconfig psacct on
[root@centos6 ~]#service psacct start 启动服务
命令ac 显示用户连线时间的统计信息,命令可以根据登陆数/退出数在屏幕上打印出用户的连线时间(单位为小时). 总计时间也可以打印出来. 如果你执行没有任何参数的ac命令, 屏幕将会显示总计的连线时间:
[root@centos6 ~]# ac -d 按天显示连线时间
Jul 27 total 23.42
Jul 28 total 14.89
Jul 29 total 78.34
。。。。。
Aug 15 total 52.11
Aug 16 total 61.00
Aug 17 total 90.39
。。。。。
Sep 29 total 34.73
Sep 30 total 13.86
Oct 1 total 18.08
Oct 6 total 36.83
Oct 7 total 110.77
Today total 5.35
[root@centos6 ~]# ac -y 按年显示连线时间
total 1765.25
[root@centos6 ~]#
[root@centos6 ~]# ac root 显示root连线时间
total 1717.79
[root@centos6 ~]# ac qhz 显示qhz连线时间
total 47.49
[root@centos6 ~]# ac -p 按照用户显示时间
qhz 47.50
root 1717.81
total 1765.31
[root@centos6 ~]# 其他的用法自己做摸索吧。。。。
lastcomm用来显示用户过去执行的命令,你可以通过用户名或者终端名来查找执行过的命令,比如root:
[root@centos6 ~]# lastcomm root 可以看到root执行过的命令
iptables S root __ 0.02 secs Wed Oct 12 11:00
route root __ 0.01 secs Wed Oct 12 11:00
free root __ 0.01 secs Wed Oct 12 11:00
free root __ 0.01 secs Wed Oct 12 11:00
sh root __ 0.01 secs Wed Oct 12 11:00
grep root __ 0.00 secs Wed Oct 12 11:00
dmesg root __ 0.00 secs Wed Oct 12 11:00
ldconfig root __ 0.01 secs Wed Oct 12 11:00
sysctl S root __ 0.04 secs Wed Oct 12 11:00
modinfo root __ 0.07 secs Wed Oct 12 11:00
uname root __ 0.00 secs Wed Oct 12 11:00
lshal root __ 0.03 secs Wed Oct 12 11:00
[root@centos6 ~]# lastcomm ls
ls qhz pts/2 0.00 secs Wed Oct 12 11:33
ls qhz pts/2 0.01 secs Wed Oct 12 11:32
ls S root __ 0.00 secs Wed Oct 12 11:16
ls root __ 0.00 secs Wed Oct 12 11:00
ls root __ 0.02 secs Wed Oct 12 11:00
[root@centos6 ~]# lastcomm gcc 可以到看到谁执行过gcc
gcc qhz pts/2 0.00 secs Wed Oct 12 11:54
[root@centos6 ~]# lastcomm passwd 可以看到谁执行过passwd
passwd qhz pts/2 0.00 secs Wed Oct 12 11:54
passwd qhz pts/2 0.01 secs Wed Oct 12 11:54
[root@centos6 ~]#
[root@centos6 ~]# lastcomm pts/2 可以看到谁在pts/2终端上执行过哪些命令
gcc qhz pts/2 0.00 secs Wed Oct 12 11:54
passwd qhz pts/2 0.00 secs Wed Oct 12 11:54
passwd qhz pts/2 0.01 secs Wed Oct 12 11:54
lastcomm qhz pts/2 0.01 secs Wed Oct 12 11:52
lastcomm qhz pts/2 0.00 secs Wed Oct 12 11:52
clear qhz pts/2 0.00 secs Wed Oct 12 11:52
bash F qhz pts/2 0.00 secs Wed Oct 12 11:52
使用sa命令打印过去执行命令的统计信息. 另外, sa命令保存了一个叫做savacct文件, 文件包含了命令被调用的次数和资源使用的次数. 而且sa还提供每一个用户的统计信息, 这些信息保存在一个叫做usracct的文件当中.
[root@centos6 ~]# sa -m 显示每个用户的进程数量和cpu时间数
1855 121059.63re 0.49cp 1407k
root 550 2201.96re 0.25cp 987k
nagios 690 7.77re 0.12cp 1994k
apache 568 2.63re 0.07cp 1094k
qhz 29 1.20re 0.04cp 868k
postfix 4 118846.06re 0.00cp 2634k
sshd 14 0.00re 0.00cp 2428k
[root@centos6 ~]# sa –user
1856 121059.63re 0.49cp 1407k
root 551 2201.97re 0.25cp 986k
nagios 690 7.77re 0.12cp 1994k
apache 568 2.63re 0.07cp 1094k
qhz 29 1.20re 0.04cp 868k
postfix 4 118846.06re 0.00cp 2634k
sshd 14 0.00re 0.00cp 2428k
[root@centos6 ~]#
上面的信息中re 是指“实际时间”,单位为分钟
cp 是指系统和用户时间总数(cpu时间单位为分钟)
k是指核心所占的平均CPU时间,一个单元的大小为1k
psacct工具包中的命令和用法不止介绍的,大家有兴趣可以自己去研究下。。。。