2019-01-07html
转自 http://www.javashuo.com/article/p-fszmzvti-ee.htmllinux
centos 7 查看全部登陆用户的操做历史centos
在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]# "