一些異常用戶試圖移去系統上的所有活動記錄(比如 ~/.bash_history), 不過我們可以使用專門的工具來監視所有用戶執行的命令. 推薦你使用進程記帳來記錄用戶的活動, 你可以通過進程記帳查看每一個用戶執行的命令, 包括CPU時間和內存占用.
psacct程序提供了幾個進程活動監視工具: ac, lastcomm, accton和sa.
.ac命令顯示用戶連接時間的統計.
.lastcomm命令顯示系統執行的命令.
.accton命令用于打開或關閉進程記帳功能.
.sa命令統計系統進程記帳的情況.
1). 安裝psacct或acct軟件包
如果你使用RHEL, 使用up2date命令:
# up2date psacct |
$ sudo apt-get install acct 或 # apt-get install 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 |
# 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 |
你可以使用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 -- 進程退出時間
你可以通過執行下面的命令來搜索進程記帳日志:
$ lastcomm rm $ lastcomm passwd 輸出: rm S root pts/0 0.00 secs Tue Nov 14 00:39 rm S root pts/0 0.00 secs Tue Nov 14 00:39 rm S root pts/0 0.00 secs Tue Nov 14 00:38 rm S root pts/0 0.00 secs Tue Nov 14 00:38 rm S root pts/0 0.00 secs Tue Nov 14 00:36 rm S root pts/0 0.00 secs Tue Nov 14 00:36 rm S root pts/0 0.00 secs Tue Nov 14 00:35 rm S root pts/0 0.00 secs Tue Nov 14 00:35 rm vivek pts/0 0.00 secs Tue Nov 14 00:30 rm vivek pts/1 0.00 secs Tue Nov 14 00:30 rm vivek pts/1 0.00 secs Tue Nov 14 00:29 rm vivek pts/1 0.00 secs Tue Nov 14 00:29 |
$ lastcomm pts/1 |
共2頁: 1 [2] 下一頁 | ||
|