扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
一些异常用户试图移去系统上的所有活动记录(比如 ~/.bash_history), 不过我们可以使用专门的工具来监视所有用户执行的命令. 推荐你使用进程记帐来记录用户的活动, 你可以通过进程记帐查看每一个用户执行的命令, 包括CPU时间和内存占用.
psacct程序提供了几个进程活动监视工具: ac, lastcomm, accton和sa.
.ac命令显示用户连接时间的统计.
.lastcomm命令显示系统执行的命令.
.accton命令用于打开或关闭进程记帐功能.
.sa命令统计系统进程记帐的情况.
1). 安装psacct或acct软件包
如果你使用RHEL, 使用up2date命令:
# up2date psacct
如果你使用CentOS/Fedora Core Linux, 使用yum命令:
$ sudo apt-get install acct
或
# apt-get install acct
2). 启动psacct/acct服务
在Ubuntu/Debian Linux系统上, pacct可以自动启动.(安装包会在系统上创建一个/var/account/pacct文件). 但是在Red Hat/Fedora Core/Cent OS, 你需要手动启动psacct服务. 敲入下面两个命令创建/var/account/pacct文件和启动pacct服务:
# chkconfig psacct on
# /etc/init.d/psacct start
如果你使用Suse Linux, 服务的名称为acct, 敲入下面的命令:
# chkconfig acct on
# /etc/init.d/acct start
现在我们可以了解如何利用这些工具来监视用户的命令和时间.
3). 显示用户连线时间的统计信息
命令可以根据登陆数/退出数在屏幕上打印出用户的连线时间(单位为小时). 总计时间也可以打印出来. 如果你执行没有任何参数的ac命令, 屏幕将会显示总计的连线时间:
$ ac
输出:
total 95.08
显示每一天的连线统计时间:
$ ac -d
输出:
Nov 1 total 8.65
Nov 2 total 5.70
Nov 3 total 13.43
Nov 4 total 6.24
Nov 5 total 10.70
Nov 6 total 6.70
Nov 7 total 10.30
.....
..
...
Nov 12 total 3.42
Nov 13 total 4.55
Today total 0.52
显示每一个用户的总计连线时间和所有用户总计连线时间:
$ ac -p
输出:
vivek 87.49
root 7.63
total 95.11
4). 查找用户过去执行的命令
你可以使用lastcomm命令打印出用户过去执行的命令. 你也可以通过用户名, tty名或命令名来搜索以往执行的命令.
比如显示vivek用户过去执行的命令:
$ lastcomm vivek
输出:
userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58
userhelper S vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
gcc vivek pts/0 0.00 secs Mon Nov 13 23:45
which vivek pts/0 0.00 secs Mon Nov 13 23:44
bash F vivek pts/0 0.00 secs Mon Nov 13 23:44
ls vivek pts/0 0.00 secs Mon Nov 13 23:43
rm vivek pts/0 0.00 secs Mon Nov 13 23:43
vi vivek pts/0 0.00 secs Mon Nov 13 23:43
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
ping S vivek pts/0 0.00 secs Mon Nov 13 23:42
cat vivek pts/0 0.00 secs Mon Nov 13 23:42
netstat vivek pts/0 0.07 secs Mon Nov 13 23:42
su S vivek pts/0 0.00 secs Mon Nov 13 23:38
每一行信息都在屏幕上打印出来, 我们以第一行输出项为例:
userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58
分析:
. userhelper 是进程的命令名
. S和X是标志信息, 由系统记帐程序管理. 每一个标志的含义是:
.. S -- 命令由超级用户执行
.. F -- 命令由fork产生, 但是没有exec(执行)
.. D -- 命令终止并创建一个core文件.
.. X -- 命令被SIGTERM信号终止.
. vivek是执行命令的用户名
. prts/0 终端名
. 0.00 secs -- 进程退出时间
你可以通过执行下面的命令来搜索进程记帐日志:
5). 统计记帐信息# sa 输出: 579 222.81re 0.16cp 7220k 4 0.36re 0.12cp 31156k up2date 8 0.02re 0.02cp 16976k rpmq 8 0.01re 0.01cp 2148k netstat 11 0.04re 0.00cp 8463k grep 18 100.71re 0.00cp 11111k ***other* 8 0.00re 0.00cp 14500k troff 5 12.32re 0.00cp 10696k smtpd 2 8.46re 0.00cp 13510k bash 8 9.52re 0.00cp 1018k less |
4 0.36re 0.12cp 31156k up2date |
# sa -u 输出: root 0.00 cpu 595k mem accton root 0.00 cpu 12488k mem initlog root 0.00 cpu 12488k mem initlog root 0.00 cpu 12482k mem touch root 0.00 cpu 13226k mem psacct root 0.00 cpu 595k mem consoletype root 0.00 cpu 13192k mem psacct * root 0.00 cpu 13226k mem psacct root 0.00 cpu 12492k mem chkconfig postfix 0.02 cpu 10696k mem smtpd vivek 0.00 cpu 19328k mem userhelper vivek 0.00 cpu 13018k mem id vivek 0.00 cpu 13460k mem bash * lighttpd 0.00 cpu 48240k mem php * |
# sa -m 输出: 667 231.96re 0.17cp 7471k root 544 51.61re 0.16cp 7174k vivek 103 17.43re 0.01cp 8228k postfix 18 162.92re 0.00cp 7529k lighttpd 2 0.00re 0.00cp 48536k |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
去集群 更超群——大容量网络演进之路
2019 IBM 中国论坛
H3C 2019 Navigate 领航者峰会
助推数据中心网络现代化转型 打造灵活可靠基础架构平台