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 不是 ...
随机推荐
- python 创建类的实例对象
# -*- coding: UTF-8 -*- class Employee: def __init__(self, name, salary): self.name = name self.sala ...
- appium+java(七)图片的放到及缩小操作
多点触控(MultiTouch) MultiTouch对象是触摸操作的集合. 多点触控手势只有两个方法,add和perform. add 用于将不同的触摸操作添加到当前的多点触控中. 当 perfor ...
- 路由跟踪表满,日志报错nf_conntrack: table full, dropping packet.
“连接跟踪表已满,开始丢包”!相信不少用iptables的同学都会见过这个错误信息吧,这个问题曾经也困扰过我好长一段时间.此问题的解决办法有四种(nf_conntrack 在CentOS 5 / ke ...
- linux压缩与解压(持续更新)
压缩 tar cvzf w.tar.gz xxx1 xxx2 对应解压:tar xvzf w.tar.gz
- automaticallyAdjustsScrollViewInsets 详解
automaticallyAdjustsScrollViewInsets 自动缩进 20 像素 默认是 True 项目中如果有UIViewController 和ScrollView 一般都要设置成f ...
- Rational Rose 2007下载、安装和破解
一.文件下载 (1)DAEMON Tools Lite(虚拟光驱)下载地址 链接:https://pan.baidu.com/s/19L1FT6T1MlyhkfXyobd26A 提取码:drfs (2 ...
- day05流程控制while循环 流程控制for循环
1.什么是循环:循环就是重复做某事 2.为何要有循环:为了计算机能够具备人重复做某事的能力 3,.如何用循环: 1.结束while循环的两种方法:1.修改条件:等到下一次循环开始时判断,条件为假才会结 ...
- 第八单元 正文处理命令及tar命令
使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查看及抽取归档文件 使用tar命令 ...
- Mycat实现mysql主从复制(读写分离)
数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...
- 基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)
情况描述:为了改善页面上的input框太多,采用∧∨折叠展开,这个小东西来控制,第一次做,记录一下ヾ(◍°∇°◍)ノ゙下边是Code 代码: //html代码 <div id="col ...