Linux 记录所有用户登录和操作的详细日志
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
Linux 记录所有用户登录和操作的详细日志的更多相关文章
- Centos记录所有用户登录和操作的详细日志
1.起因 最近Linux服务器上一些文件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录. 一般大家通常会采用history来记录,但是history有个缺陷就是默认是1000行 ...
- 通过登入IP记录Linux所有用户登录所操作的日志
通过登入IP记录Linux所有用户登录所操作的日志 对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作 ...
- linux查看ssh用户登录日志与操作日志
linux查看ssh用户登录日志与操作日志 2013-11-01转载 ssh用户登录日志 linux下登录日志在下面的目录里: 代码如下 复制代码 cd /var/log 查看ssh用户的登录日 ...
- linux 记录所有用户bash操作日志
记录所有用户登录系统的任何操作日志,以便有据可查. 1.编辑 /etc/profile文件. 1 # vim /etc/profil 2. 在其后添加如下内容 1 2 3 4 5 6 7 8 ...
- linux下MySQL安装登录及操作
linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-cl ...
- tail -fn 1000 test.log | grep '关键字' 按照时间段 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
Linux 6种日志查看方法,不会看日志会被鄙视的 2020-02-11阅读 7.3K0 作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽 ...
- Linux如何设置用户登录超时(闲置时间)vi /etc/profile ... export TMOUT=900
Linux如何设置用户登录超时(闲置时间) 转载莫负寒夏ai 最后发布于2019-08-08 15:04:22 阅读数 1897 收藏 展开 1. 针对所有用户 # vi /etc/profile ...
- Ubuntu Linux启用root用户登录
Ubuntu Linux有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起.对于其他Linux系统来 说,一般在安装过程就设定root密码,这样 ...
- MySQL 用户登录与操作执行
一个用户可以不登录进Mysql 数据库,由两方面的因数决定 1.你是谁:也就是mysql 数据库中记录的用户名和密码,在SQL Server数据库,中只要求说明你是谁就可以登录了,可是mysql 不是 ...
随机推荐
- 026_lsof命令经验总结
一.lsof处理删除文件未释放句柄问题. 但是如果你不知道是哪个文件,或者是很多文件都有这样的情况,那你需要使用如下命令 lsof |grep deleted 注:这个deleted表示该已经删除了的 ...
- 关于在Fragment中设置toolbar及菜单的方法
在NoActionBar的主题中onCreateOptionsMenu方法不会运行,这里就需要将toolbar强制转换为ActionBar 在加入toolbar的监听之类后需要在onCreateVie ...
- ASP.NET如何下载大文件
关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(参考OSChina的 ...
- Hbase理论&&hbase shell&&python操作hbase&&python通过mapreduce操作hbase
一.Hbase搭建: 二.理论知识介绍: 1Hbase介绍: Hbase是分布式.面向列的开源数据库(其实准确的说是面向列族).HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hb ...
- 2018 github热门项目
github流行的几个项目,我们来学习一下. 1. developer-roadmap-chinese image.png 项目简介:2018年web程序员路线中文版, 这个仓库里包含了一些前端,后端 ...
- STM32L476应用开发之四:触摸屏驱动与数据交互
数据交互可以说是任何一台仪器都需要的功能.我们的便携式气体分析仪,需要人来操作和配置,所以触摸屏就是我们必然的一个选择.本次我们计划采用3.5寸显示屏,串口通讯. 1.硬件设计 前面我们实验了串行通讯 ...
- 小学生都看得懂的C语言入门(5): 指针
现在已经学到C语言的后面了, 快学完咯.... (一)取地址运算 先来看一下sizeof 计算所占字节 #include<stdio.h> int main() { int a; a=; ...
- flower
问题 D: flower 时间限制: 1 Sec 内存限制: 128 MB 题目描述 又是一年教师节,有n个小朋友打算去看望花老师.去看花老师当然要买花咯,不过某些土(xue)豪(ba)买了太多的花 ...
- 性能测试四十九:ngrinder压测平台
下载地址:https://sourceforge.net/projects/ngrinder/files/ ngrinder工作原理:这里的controller就是ngrinder平台 部署(以win ...
- AI-序列化-查-做接口
序列化最终代码(下边的可以不看) from rest_framework.views import APIView from rest_framework import serializers fro ...