Linux 记录所有用户登录和操作的详细日志

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

 

 

 

1、起因

 

最近linux服务器上一些文件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录。

 

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

 

所以我们不得不自己写代码来实现这样的功能。

 

2、自动记录脚本

编写脚本如下:

history

 

USER=`whoami`

 

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 /var/log/history ]; then

 

mkdir /var/log/history

 

chmod 777 /var/log/history

 

fi

 

if [ ! -d /var/log/history/${LOGNAME} ];  then

 

mkdir /var/log/history/${LOGNAME}

 

chmod 300 /var/log/history/${LOGNAME}

 

fi

 

export HISTSIZE=4096

 

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

 

export  HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"

 

chmod 600  /var/log/history/${LOGNAME}/*history* 2>/dev/null

 

这个脚本需要放在/etc/profile文件的末尾。这里默认写了记录日志文件的根目录是:/var/log/history,这个目录需要初始化建立,然后通过“exportHISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"

”可以看到记录日志的路径是/var/log/history/${LOGNAME},所以这个目录也需要事先建立,有多少个用户,就要建立多少个目录,而且要把目录的使用权限赋予相对应的用户。

 

而每次用户登录到退出都会产生以用户名、登录ip地址、操作时间为文件名的文件,文件里面包含本次用户的所有操作记录。

 

3、建立初始化目录

先去/home查看有多少个用户

[root@azure_test_static1_11_35 history]#  ll

 

total 28

 

drwxr-xr-x 2 adminuser adminuser 4096 Nov  17 21:53 adminuser

 

drwxr-xr-x 2 fastdfs   fastdfs    4096 Nov 17 21:53 fastdfs

 

drwxr-xr-x 2 loguser   loguser    4096 Nov 17 19:43 loguser

 

drwxr-xr-x 2 nginx     nginx      4096 Nov 17 20:54 nginx

 

d-wx------ 2 root      root      4096 Nov 17 21:53 root

 

drwxr-xr-x 2 tomcat    tomcat     4096 Nov 17 19:42 tomcat

 

drwxr-xr-x 2 zabbix    zabbix     4096 Nov 17 19:42 zabbix

 

[root@azure_test_static1_11_35 history]#

 

 

然后开始建立初始化目录

[root@azure_test_static1_11_35 log]#  mkdir /var/log/history/fastdfs

 

[root@azure_test_static1_11_35 history]#  chown fastdfs:fastdfs fastdfs -R

 

[root@azure_test_static1_11_35 log]#  mkdir /var/log/history/tomcat

 

[root@azure_test_static1_11_35 log]# chown  -R tomcat:tomcat /var/log/history/tomcat

 

[root@azure_test_static1_11_35 log]#  mkdir /var/log/history/zabbix

 

[root@azure_test_static1_11_35 log]#  chown -R zabbix:zabbix /var/log/history/zabbix

 

[root@azure_test_static1_11_35 log]#  mkdir /var/log/history/loguser

 

[root@azure_test_static1_11_35 log]#  chown -R loguser:loguser /var/log/history/loguser

 

[root@azure_test_static1_11_35 log]#  mkdir /var/log/history/adminuser

 

[root@azure_test_static1_11_35 log]#  chown -R adminuser:adminuser /var/log/history/adminuser    

 

 

 

 

 

4、用户登录验证

用其中一个用户fastdfs登录进程操作

[adminuser@azure_test_static1_11_35 ~]$  sudo -i

 

[sudo] password for adminuser:

 

[root@azure_test_static1_11_35 ~]# su -  fastdfs

 

[fastdfs@azure_test_static1_11_35 ~]$ cp  test1.log test3.log

 

[fastdfs@azure_test_static1_11_35 ~]$  echo "test 1"> test3.log

 

[fastdfs@azure_test_static1_11_35 ~]$  echo "1" >> test3.log

 

[fastdfs@azure_test_static1_11_35 ~]$  echo "2" >> test3.log

 

[fastdfs@azure_test_static1_11_35 ~]$  echo "3" >> test3.log

 

[fastdfs@azure_test_static1_11_35 ~]$  more test3.log

 

test 1

 

1

 

2

 

3

 

[fastdfs@azure_test_static1_11_35 ~]$

 

然后退出用户,重新登录进去日志目录/var/log/history/fastdfs/查看有最新的记录,一次用户登录到退出就会保存成一个日志文件记录:

# 进入日志目录

 

[root@azure_test_static1_11_35 fastdfs]#  cd /var/log/history/fastdfs/

 

# 查看有2个操作日志记录

 

[root@azure_test_static1_11_35 fastdfs]#  ll

 

total 8

 

-rw------- 1 fastdfs fastdfs  83 Nov 17 21:53  fastdfs@192.168.120.103_20161117_21:53:16

 

-rw------- 1 fastdfs fastdfs 139 Nov 17  21:59 fastdfs@192.168.120.103_20161117_21:56:47

 

# 打开当前的操作记录日志

 

[root@azure_test_static1_11_35 fastdfs]#  more fastdfs@192.168.120.103_20161117_21:56:47

 

cp test1.log test3.log

 

echo "test 1"> test3.log

 

echo "1" >> test3.log

 

echo "2" >> test3.log

 

echo "3" >> test3.log

 

more test3.log

 

exit

 

[root@azure_test_static1_11_35 fastdfs]#

 

 

PS:可以看到记录的日志和我们的实际操作保持一致。证明我们要的功能实现了。

 

参考文章:http://www.heminjie.com/system/linux/412.html

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 9
    点赞
  • 4
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值