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-> ...
随机推荐
- DStream 转换操作------有状态转换操作
import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} obje ...
- 【RAID在数据库存储上的应用 】
随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...
- Oracle数据库初学者入门教程
Oracle数据库是相对于其他数据库来说比较难的一个.Oracle Database,又名Oracle RDBMS,简称Oracle.是甲骨文公司推出的一款关系数据库管理系统.Oracle数据库系统是 ...
- Application、Activity Stack 和 Task的区别
Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...
- oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...
- Unity Sprite Packer 问题集合
介绍 今天突发奇想用了下sprite packer 这个功能,基本用法网上教程一堆一堆的,这里就不赘述了. 在使用sprite packer过程中遇到一些问题,然后各种百度不到答案,最后和谐上网找到了 ...
- Android 检查手机上是否安装了指定的软件(根据包名检测)
Android检查手机上是否安装了指定的软件(根据包名检测) /** * 检查手机上是否安装了指定的软件 * @param context * @param packageName * @return ...
- printFinal用法示例
printFinal是一个基于jQuery的打印插件,支持打印预览,使用很简单,废话不多多说,直接上代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- c++和python如何实现主机字节序和网络字节序的相互转换
在上一篇文章网络编程:主机字节序和网络字节序中,介绍了主机字节序和网络字节序的基本概念以及在实际的编程中,何时需要进行网络字节序和主机字节序的转换.本篇文章着重介绍使用c++和python语言,如何实 ...
- HDU_5734_数学推公式
题意:给一个向量W={w1,w2……,wn},和一个向量B,B的分量只能为1和-1.求||W-αB||²的最小值. 思路:一来一直在想距离的问题,想怎么改变每一维的值才能使这个向量的长度最小,最后无果 ...