linux系统监控:记录用户操作轨迹,谁动过服务器
我们在实际工作当中,都碰到过误操作、误删除、误修改过配置文件等等事件。对于没有堡垒机的公司来说,要在linux系统上深究到底谁做过配置文件的修改、做过误删除是很头疼的事情,特别是遇到删库跑路的事件,更头大了。当然你可以通过history来查看历史命令记录,如果把history记录涂抹掉了,是不是啥也看不到了,如果你想查看在某个时间段到底是谁通过vim编辑过某个文件呢?
那么,有什么办法可以看见这些操作呢,答案是一定有的,具体怎么实现呢,linux script命令正有如此强大的功能,可以满足我们的需求,script可以记录终端会话,只要是linux6.3以上的系统,都会自带script命令,下面我用centos 7系统来测试一下。
2、配置
2.1 验证script命令(我这里是有的)
[root@localhost ~]# which script
/usr/bin/script
2.2 配置profile文件,在末尾添加如下内容:
[root@localhost ~]# vim /etc/profile if [ $UID -ge 0 ]; then
exec /usr/bin/script -t 2>/var/log/script/$USER-$UID-`date +%Y%m%d%H%M`.date -a -f -q /var/log/script/$USER-$UID-`date +%Y%m%d%H%M`.log
fi
参数:
-t 指明输出录制的时间数据
-f 如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS:可以用于教学,两个命令行接-f可以实时演示
-a 输出录制的文件,在现有内容上追加新的内容
-q 可以使script命令以静默模式运行
如下图所示:
说明:
用户登录执行的操作都会记录到/var/log/script/*.log 里(保存日志的目录根据你自己定义),我们可以通过more、vi等命令查看目录里的日志。
注意:
我这里把用户ID大于0的都记录下来了,你可以重新登录用户,随便操作一些命令,查看生成的文件。
root用户的ID为0,新建普通用户的UID是从500开始的(通过cat /etc/password可以查看用户的UID),如果你不想记录root用户的操作,你把if里面的值改成500: if [ $UID - ge 500 ];
2.3 创建目录、赋予权限
你是不是以为写了这条if语句在/etc/profile文件中就完事了,目录都没创建呢:
[root@localhost ~]# mkdir /var/log/script
#最好给个777的权限,我用744的权限反正也生效
[root@localhost ~]# chmod 777 /var/log/script/
2.4 使环境生效
[root@localhost ~]# source /etc/profile
3、验证
好了,你可以退出linux终端,在重新登录一下,然后随便敲几个命令来看看。
[root@localhost ~]# cd /var/log/script/
[root@localhost script]# ll
total 16
-rw-r--r-- 1 root root 68 Dec 22 15:46 root-0-201712221545.date
-rw-r--r-- 1 root root 111 Dec 22 15:46 root-0-201712221545.log
-rw-r--r-- 1 root root 0 Dec 22 15:46 root-0-201712221546.date
-rw-r--r-- 1 root root 5693 Dec 22 15:46 root-0-201712221546.log
从上图可以看到,在/var/log/script目录中,已经产生了log和data为后缀的文件,并且还看到了root用户和UID号0。
.log:记录了操作
.data:可以回放操作
我们用scriptreplay来回放一下操作,看下效果如何:
[root@localhost script]# scriptreplay root-0-201712221545.date root-0-201712221545.log
注意:先指定“时间文件 .data”,然后是“命令文件 .log”,不要颠倒了。
以上就完也了记录用户的所有操作,并且还可以随时查看,相当于有回放功能,像录像一样,以后定位是谁的问题就好找原因了。
linux系统监控:记录用户操作轨迹,谁动过服务器的更多相关文章
- Django项目:堡垒机(Linux服务器主机管理系统)--03--03堡垒机在Linux系统里记录会话日志02/02
#main.py #本文件写所有的连接交互动作程序 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— from Fortress im ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- linux系统监控常用工具
linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h 显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 u ...
- linux系统监控sar命令
linux系统监控sar命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包 ...
- (转)linux 系统下虚拟用户的作用
原文:http://blog.csdn.net/luoshao20120430/article/details/16900653 http://blog.csdn.net/u01 ...
- linux系统下的用户文件句柄数限制
linux系统下的用户文件句柄数限制 文章来源:企鹅号 为什么要修改用户打开的文件数 系统默认单个进程可以打开1024个文件,对于一些应用如tomcat.oracle等,运行时经常open成千上万个文 ...
- RabbitMQ实战场景(一):异步记录用户操作日志
传统的项目开发中业务流程以串行方式,执行了模块1—>模块2–>模块3 而我们知道,这个执行流程其实对于整个程序来讲是有一定的弊端的,主要有几点: (1)整个流程的执行响应等待时间比较长; ...
- MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意
32位未修改源码与修改版的代码下载: git clone git@github.com:youzhonghui/MiniCRT.git MiniCRT 64位 linux 系统移植记录 MiniCRT ...
- Linux系统监控实用工具Glances
Linux系统监控实用工具Glances Glances安装 Glances安装要求:python >= 2.6 和 psutil >= 0.4.1 1.第一步,安装了python-> ...
随机推荐
- PCB 使用Nginx让IIS7实现负载均衡
在PCB行业众多系统中PCB工程系统是主要的数据生产者, 它与外部系统数据交互是最多的,经统计接口数超过100个之多;这么多接口调用与管理起来是混乱的,所以今年年初对工程集成方式改造,将原来的点对点的 ...
- Ruby Range类
创建: 2017/09/30
- JQuery 总结
JQuery官方网站 http://jquery.com/ 1.JQuery概念 A.Jquery是一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器,jQu ...
- 基于Spark Streaming预测股票走势的例子(一)
最近学习Spark Streaming,不知道是不是我搜索的姿势不对,总找不到具体的.完整的例子,一怒之下就决定自己写一个出来.下面以预测股票走势为例,总结了用Spark Streaming开发的具体 ...
- Aspose Cells dll 实现数据简单下载
Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[ ...
- MaBatis配置(单配置 之一)
注: 此文中的实体类还是沿用上一章的Emp和Dept两个类 .引入需要的jar包文件:http://pan.baidu.com/s/1qYy9nUc :mybatis-3.2.2.jar .编写MyB ...
- 【RTTI】java Class类详解
RTTI (Run-Time Type Information)运行时类信息 Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关j ...
- Java——Spring注解
Spring常用注解使用注解来构造IoC容器用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan bas ...
- CSS——dispaly、overflow、visibility、opacity
隐藏盒子: 1.overflow:hidden; 隐藏盒子超出的部分. 2.display: none; 隐藏盒子,而且不占位置.(用的最 ...
- Python语言之控制流(if...elif...else,while,for,break,continue)
1.if...elif...else... number = 23 guess = int(input('Enter an integer : ')) if guess == number: prin ...