linux如何查看超户执行的日志,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

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 ...

Ubuntu Linux启用root用户登录

Ubuntu Linux有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起.对于其他Linux系统来 说,一般在安装过程就设定root密码,这样 ...

MySQL 用户登录与操作执行

一个用户可以不登录进Mysql 数据库,由两方面的因数决定 1.你是谁:也就是mysql 数据库中记录的用户名和密码,在SQL Server数据库,中只要求说明你是谁就可以登录了,可是mysql 不是 ...

两种方法实现Linux不活动用户登录超时后自动登出

在平常的工作中,windows系统使用的比较多一些,身边的很多同事都会对自己的电脑进行一些个性化设置,比如离开一段时间后自动锁屏.自动关闭屏幕.自动注销当前登录等.在windows下可以这样操作,那么 ...

使用触发器实现记录oracle用户登录失败信息到alert.log日志文件

前面我们说了用oracle自带的审计功能可以实现记录用户登录失败日志到数据表中(链接:http://www.54ok.cn/6778.html).今天我们来分享一下如何把用户登录失败信息记录到aler ...

随机推荐

ASP.NET中Session的sessionState 4种mode模式

1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...

用django实现一个微信图灵机器人

微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...

asp.net mvc 页面缓存

在任务中需要实现点击浏览器back按钮,加载的前一页面需要强制刷新. 想要在前端通过js来绑定数据实现,但是觉得太麻烦,还是用另一种方式来解决: 不缓存该页面. 简单易懂: Response.Cach ...

mina教程

关于mina介绍这里不做阐述..... 我们先做一个关于mina的helloworld 首先先下载mina包:http://mina.apache.org/ (如果你已经下载,此步骤忽略) 下载下来以 ...

多源最短路Floyd 算法————matlab实现

弗洛伊德(Floyd)算法是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名. 基本思想 通过Floyd计 ...

[转载]ACM搜索算法总结(总结)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值