一、使用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地址或主機號來判斷)
在linux系統的環境下,無論是root用戶仍是其它的用戶只有登錄系統後用進入操做咱們均可以經過命令history來查看歷史記錄,但是假如一臺服務器多人登錄,一天由於某人誤操做了刪除了重要的數據。這時候經過查看歷史記錄(命令:history)是沒有什麼意義了(由於history只針對登陸用戶下執行有效,即便root用戶也沒法獲得其它用戶histotry歷史)。那有沒有什麼辦法實現經過記錄登錄後的IP地址和某用戶名所操做的歷史記錄呢?答案:有的。
經過在/etc/profile裏面加入如下代碼就能夠實現:
PS1="`whoami`@`hostname`:"'[$PWD]'historyUSER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiif [ ! -d /tmp/dbasky ]thenmkdir /tmp/dbaskychmod 777 /tmp/dbaskyfiif [ ! -d /tmp/dbasky/${LOGNAME} ]thenmkdir /tmp/dbasky/${LOGNAME}chmod 300 /tmp/dbasky/${LOGNAME}fiexport HISTSIZE=4096DT=`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]ls10.1.80.47 dbasky.2013-10-24_12:53:08root@zsc6:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08
查看在12:53:08從10.1.80.47登陸的root用戶操做命令歷史