Linux下查看/管理當前登陸用戶及用戶操做歷史記錄

  1、查看及管理當前登陸用戶

一、使用w命令查看登陸用戶正在使用的進程信息,w命令用於顯示已經登陸系統的用戶的名稱,以及他們正在作的事。該命令所使用的信息來源於/var/run/utmp文件。w命令輸出的信息包括:linux

  • 用戶名稱安全

  • 用戶的機器名稱或tty號bash

  • 遠程主機地址服務器

  • 用戶登陸系統的時間ssh

  • 空閒時間(做用不大)ide

  • 附加到tty(終端)的進程所用的時間(JCPU時間)spa

  • 當前進程所用時間(PCPU時間)orm

  • 用戶當前正在使用的命令進程

$ 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查看全部登陸用戶進程信息,這些查看命令大同小異;it

二、使用pkill強制退出登陸的用戶

使用pkill能夠結束當前登陸用戶的進程,從而強制退出用戶登陸,具體使用能夠結合w命令;

首先:使用w查看當前登陸的用戶,注意TTY所示登陸進程終端號

其次:使用pkill –9 -t pts/1 結束pts/1進程所對應用戶登陸(可根據FROM的IP地址或主機號來判斷)

2、查看全部登陸用戶的操做歷史

        在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用戶操做命令歷史

相關文章
相關標籤/搜索