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

1、起因

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

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

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

编写脚本如下

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地址、操作时间为文件名的文件,文件里面包含本次用户的所有操作记录。

先去/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

用其中一个用户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:59fastdfs@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]#

参考:https://blog.csdn.net/tao19910610/article/details/53285010

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值