linux 记录用户操作日志

1、背景描述

最近有需求,客户有服务器被登录,不知道谁登录的,操作了什么命令,history

linux通常会用history来记录,但是history有个缺陷就是默认是1000行,当然你也可以vim /etc/profile将1000修改成1000000行,但是这只是比较笼统的做法,且history可以清空,看不到详细的用户来源已经操作记录,比如来源ip地址、操作时间、操作用户等。

测试系统:CentOS Linux release 7.4.1708 (Core) (Ubuntu没测试过,请自己照葫芦画瓢)

2、脚本

编写脚本如下:

vi /etc/profile文件,在末尾添加下面脚本:

################begin history log###############

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

HISTDIR=/var/log/history

DT=`date +%Y-%m-%d`

if [ -z $USER_IP ] #如果字符串是空

then

USER_IP=`hostname`

fi



pdf="."

if [[ ! $USER_IP == *${pdf}* ]] #如果ip中不包括点,则用主机名

then

USER_IP=`hostname`

fi



if [ ! -d $HISTDIR ]

then

mkdir -p $HISTDIR

chmod 773 $HISTDIR

fi



if [ ! -d $HISTDIR/${DT} ]

then

mkdir -p $HISTDIR/${DT}

chmod 773 $HISTDIR/${DT}

fi



export HISTFILESIZE=10000 #定义文件中最多只有HISTFILESIZE行

export HISTSIZE=10000 #定义history命令输出的记录数

DT2=`date +%Y%m%d_%H:%M:%S`

export HISTFILE="$HISTDIR/${DT}/${LOGNAME}@${USER_IP}_$DT2"

export HISTTIMEFORMAT="%Y%m%d_%H:%M:%S# "

#chmod 600 $HISTDIR/${DT}/*_* 2>/dev/null

################end history log###############

注意:

1、这里默认写了记录日志文件的默认目录是:/var/log/history(里面文件普通用户没有权限)

2、然后先用root登录一次,然后上面的mkdir /var/log/history会自动创建,切记,如果没有用root,先用admin登录,这会提示错误,因为/var/log目录默认admin没有权限,创建不了。

 

3、用户登录验证

[root@test-zts ~]# cd /var/log/history/

[root@test-zts history]# ls

2020-01-01

[root@test-zts history]# cd 2020-01-01/

[root@test-zts 2020-01-01]# ls

[email protected]_20200101_11:41:17 [email protected]_20200101_11:42:36 root@test-zts_20200101_11:45:59

[email protected]_20200101_11:41:53 [email protected]_20200101_11:43:40

[root@test-zts 2020-01-01]# cat root@test-zts_20200101_11:45:59

#1577850366

cd /var/log/history/2020-01-01/

#1577850367

ls

#1577850371

test

#1577850374

exit

说明:

上面的#1577850374 都是记录时间,这个时间叫做unix time,是从1970年1月1日临时起,到现在一共经过了多少秒。因为1969年是unix系统诞生,因此1970年1月1日被规定为unix系统诞生的时间的初始,linux系统因为和unix系统的相似性,也完全采用这种方式来记录时间,为了按照人类的年月日方式来显示时间,执行history命令来查看,就可以了,例如:

[root@test-zts 2020-01-01]# history

1 20200101_12:11:56# cd /var/log/history/

2 20200101_12:11:57# ls

3 20200101_12:12:00# cd ..

4 20200101_12:12:01# ll

5 20200101_12:12:06# cd history/

6 20200101_12:12:07# ll

7 20200101_12:12:43# ls

8 20200101_12:12:45# cd 2020-01-01/

9 20200101_12:12:46# ls

10 20200101_12:12:50# cat admin\@10.36.53.71_20200101_12\:09\:14

11 20200101_12:13:05# ls

12 20200101_12:13:13# cat [email protected]_20200101_12:12:41

13 20200101_12:14:27# cat /etc/profile

14 20200101_12:19:20# history

你可能感兴趣的:(服务器)