Linux下查看/管理當前登錄用戶及用戶操作歷史記錄
1、使用w命令查看登錄用戶正在使用的進程信息,w命令用於顯示已經登錄系統的用戶的名稱,以及他們正在做的事。該命令所使用的信息來源於/var/run/utmp文件。w命令輸出的信息包括:
用戶名稱 用戶的機器名稱或tty號 遠程主機地址 用戶登錄系統的時間 空閑時間(作用不大) 附加到tty(終端)的進程所用的時間(JCPU時間) 當前進程所用時間(PCPU時間) 用戶當前正在使用的命令 $ w23:04:27 up 29 days, 7:51, 3 users, load average: 0.04, 0.06, 0.02USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATramesh pts/0 10.1.80.56 22:57 8.00s 0.05s 0.01s sshd: ramesh [priv]jason pts/1 10.20.48 23:01 2:53 0.01s 0.01s -bashjohn pts/2 10.1.80.7 23:04 0.00s 0.00s 0.00s w
此外,可以使用who am i查看使用該命令的用戶及進程,使用who查看所有登錄用戶進程信息,這些查看命令大同小異;
2、使用pkill強制退出登錄的用戶
使用pkill可以結束當前登錄用戶的進程,從而強制退出用戶登錄,具體使用可以結合w命令;
首先:使用w查看當前登錄的用戶,注意TTY所示登錄進程終端號
其次:使用pkill –9 -t pts/1 結束pts/1進程所對應用戶登錄(可根據FROM的IP地址或主機號來判斷)
二、查看所有登錄用戶的操作歷史
在linux系統的環境下,不管是root用戶還是其它的用戶只有登陸系統後用進入操作我們都可以通過命令history來查看歷史記錄,可是假如一台伺服器多人登陸,一天因為某人誤操作了刪除了重要的數據。這時候通過查看歷史記錄(命令:history)是沒有什麼意義了(因為history只針對登錄用戶下執行有效,即使root用戶也無法得到其它用戶histotry歷史)。那有沒有什麼辦法實現通過記錄登陸後的IP地址和某用戶名所操作的歷史記錄呢?答案:有的。
通過在/etc/profile裡面加入以下代碼就可以實現:
PS1="`whoami`@`hostname`:""[$PWD]"
history
USER_IP=`who -u am i 2>/dev/null| awk "{print $NF}"|sed -e "s/[()]//g"`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/dbasky ]
then
mkdir /tmp/dbasky
chmod 777 /tmp/dbasky
fi
if [ ! -d /tmp/dbasky/${LOGNAME} ]
then
mkdir /tmp/dbasky/${LOGNAME}
chmod 300 /tmp/dbasky/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT"
chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null
source /etc/profile 使用腳本生效
退出用戶,重新登錄
上面腳本在系統的/tmp新建個dbasky目錄,記錄所有登陸過系統的用戶和IP地址(文件名),每當用戶登錄/退出會創建相應的文件,該文件保存這段用戶登錄時期內操作歷史,可以用這個方法來監測系統的安全性。
root@zsc6:[/tmp/dbasky/root]ls
10.1.80.47 dbasky.2013-10-24_12:53:08
root@zsc6:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08
查看在12:53:08從10.1.80.47登錄的root用戶操作命令歷史
推薦閱讀:
※從登陸和註冊頁面聊聊UX怎樣進行思考
※如何讓迅雷會員賬號被多人使用防被踢?「你的賬號已在別處登錄」的解決方法 | 折騰の世界
※電腦小技巧-IE快速登錄有密碼的網站
※各大博客聚合平台登錄入口
※關於web端的單點登錄實踐