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.02
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
ramesh   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 -bash
john     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用戶操作命令歷史


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章