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]# "