2019-01-07
轉自 https://www.cnblogs.com/kevingrace/p/7373146.html
centos 7 查看所有登錄用戶的操作歷史
在Linux系統的環境下,不管是root用戶還是其它的用戶只有登陸系統后用進入操作我們都可以通過命令
history
來查看歷史記錄。可是假如一台服務器多人登陸,一天因為某人誤操作了刪除
了重要的數據。這時候通過查看歷史記錄(命令:
history
)是沒有什么意義了(因為
history
只針對登錄用戶下執行有效,即使root用戶也無法得到其它用戶histotry歷史)。那有沒有什么
辦法實現通過記錄登陸后的IP地址和某用戶名所操作的歷史記錄呢?答案肯定是有的!
通過在
/etc/profile
文件底部添加以下代碼就可以實現:
[root@
test
~]
# cat /etc/profile
......
#記錄每個用戶的操作信息
export
PS1=
'[\u@\h \w]# '
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
/opt/history
]
then
mkdir
/opt/history
chmod
777
/opt/history
fi
if
[ ! -d
/opt/history/
${LOGNAME} ]
then
mkdir
/opt/history/
${LOGNAME}
chmod
300
/opt/history/
${LOGNAME}
fi
export
HISTSIZE=4096
DT=`
date
+
"%Y%m%d_%H%M%S"
`
export
HISTFILE=
"/opt/history/${LOGNAME}/${USER_IP} history.$DT"
chmod
600
/opt/history/
${LOGNAME}/*
history
* 2>
/dev/null
[root@
test
~]
# source /etc/profile #使得上面配置生效
上面腳本在系統的
/opt
下新建個
history
目錄,記錄所有登陸過系統的用戶和IP地址(文件名),每當用戶登錄/退出會創建相應的文件,該文件保存這段用戶登錄時期內操作歷史,可以用這個
方法來監測系統的安全性。
------------------------------------------------------------------------------------------------------------------------------------------
上面的顯示跟默認的linux終端顯示不太習慣。現在要求終端里切換路徑后,只顯示當前的簡介路徑,不顯示全部路徑,並且后面帶上
#或$符號,那么只需要將上面的第一行
PS1參數后面的設置如下:
1)只顯示當前簡介路徑,不顯示全路徑,顯示
#號。注意下面在"#"符號后面空出一格,這樣終端的"#"符號跟命令之間就有了一格的距離,習慣而已!
PS1=
"[\u@\h \W]# "
2)只顯示當前簡介路徑,不顯示全路徑,顯示$號。注意下面的
"$"
符號后面空出一格。
PS1=
"[\u@\h \W]\$ "
這里我在腳本選擇第(1)種帶
"#"
號顯示(也可以兩種都不選,直接將第一行PS1的設置給去掉,這樣就是默認的了終端顯示.線上使用的話,推薦使用這種默認的),生效后的終
端顯示內容和linux默認顯示的一樣。即
export
PS1=
"[\u@\h \W]# "