首页 > linux系统 长久记录所有用户所有操作记录

linux系统 长久记录所有用户所有操作记录

在linux系统中想要记录所有登录过当前系统的用户操作,排查有人对当前系统做的何种操作导致系统问题,可以按照如下方法进行。

前言

在描述操作步骤之前,先说一下系统环境变量的相关配置文件

  • ~/.bashrc~/.bash_file,这两个文件是当前用户shell下生效的环境变量配置文件。修改完成之后需要source 一下对应的配置
  • /etc/profile/etc/bashsrc是全局变量。修改完成后所有的用户shell都会生效,这里我们改动的主要是/etc/profile这个文件,它有一个文件夹/etc/profile.d目录,其中也是对应的脚本,可以配置定制的环境变量脚本

    查看/etc/profile其中一段代码
    for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do #从/etc/profile.d目录下取出文件
    if [ -r "$i" ]; then  # 判断是否可执行if [ "${-#*i}" != "$-" ]; then #判断是否为交互式脚本,${-#*i}用来输出脚本类型,如果$-为交互式脚本类型(echo $-输出包含字母i). "$i" #是非交互脚本,不需要查看或者输入任何信息,即可直接执行else. "$i" >/dev/null #否则重定向到空,即不执行fi
    fi
    done
    
    关于交互脚本和非交互脚本的详细描述可以参考博文 https://blog.csdn.net/gui951753/article/details/79154496

实现

针对/etc/profile.d中脚本的执行方式,可以自己编写实现记录所有用户操作记录的脚本get_all_user.sh ,将该脚本放入到/etc/profile.d文件夹下,并source /etc/profile即可生效

该脚本在用户退出之后会在/tmp/baron目录下生成用户名的文件夹,并在该文件夹下生成对应的登录ip以及时间为文件名的用户操作记录文件

#get the operation of users on the server#设置终端显示符
#root@[/tmp/baron/]#
user=`whoami`
if [ "$user" == "root" ];thenPS1="`whoami`@"'[$PWD]#'
elsePS1="`whoami`@"'[$PWD]$'
fi#HISTFILE的记录方式是在用户退出后将history中的缓存写入到HISTFILE中
history#获取登录用户ip
USER_IP=`who -u am i 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" == " " ];thenUSER_IP=`hostname`
fi#创建文件夹并设置权限
if [ ! -d /tmp/baron ];thenmkdir /tmp/baronchmod 777 /tmp/baron
fi
if [ ! -d /tmp/baron/${LOGNAME} ];thenmkdir /tmp/baron/${LOGNAME}chmod 300 /tmp/baron/${LOGNAME}
fi#设置history可以记录命令的文件大小
export HISTSIZE=8192
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/tmp/baron/${LOGNAME}/${USER_IP}.baron.$DT"
export HISTTIMEFORMAT="%F %T "#只有root对该目录下所有文件有读写权限,防止其他用户改动
chmod 600 /tmp/baron/${LOGNAME}/*baron* 2>/dev/null

生成如下记录,可以看到有具体的登录设备ip以及对应的用户,文件中为用户的具体操作记录。非常直观

在这里插入图片描述

参考博文:

深入浅出理解交互式shell和非交互式shell、登录shell和非登录shell的区别 https://blog.csdn.net/gui951753/article/details/79154496

linux命令h—history https://blog.csdn.net/qq_23929673/article/details/97308965

更多相关:

  • 在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切。本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或编程的经验。 课程获取:Unity 3D学习视觉脚本无需编码即可创建高级游戏-云桥网 本课程首先为绝对初学者介绍unity,因...

  • The complete AutoCAD Automation tasks course Using Script MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:42节课(4h 25m) |大小:3.35 GB 含课程文件 学...

  • 我们知道linux 下shell可以被分为交互式脚本和非交互式脚本。 交互式脚本即 输入命令之后shell会等待你的输入,当你输入之后命令会被立即提交从而执行。这个时候我们常见的终端bash,以及login提示等都是交互式命令。 非交互式脚本即shell解释器不需要等待终端的输入,自己去执行脚本中的命令,当遇到脚本中的EOF则结束。...

  • 我的自动化脚本在运行的时候,会生成一个界面,点击该页面上的按钮能够进行自动化操作。 经常遇到的一个问题是: 脚本运行一半,GUI程序出现了异常情况,这个时候,再次点击生成的界面上的按钮,不会有任何反应,我需要重新启动exe文件,程序的健壮性受到了考验。 为了解决这个问题,只需要在脚本中加入少量的错误验证即可: $ch...

  • DNS信息是由/etc/resolv.conf提供的,它是每次开机时,由/sbin/resolvconf生成的 /etc/resolv.conf是/run/resolvconf/resolv.conf的符号链接 错误的修改方法 直接修改/etc/resolv.conf文件添加DNS的方法并不可行,因为重启系统后,该配置文件...

  • 配置之前清空所有服务器防火墙规则 iptables -F 关闭selinux: 1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态 SELinux status:                 enabled 2、getenforce            ...

  • 在Ubuntu系统网络设备启动的流程中,会依赖/etc/network/interface的配置文件初始化网络接口,所以直接在/etc/network/interface之中配置好对应的dns服务器会最先写入/etc/resolv.conf。所以我们可以在其中添加如下内容: dns-nameservers 180.76...

  • RHEL/CentOS通用性能优化、安全配置参考   本文的配置参数是笔者在实际生产环境中反复实践总结的结果,完全适用绝大多数通用的高负载、安全性要求的网络服务器环境。故可以放心使用。   若有异议,欢迎联系[email protected]探讨。   提示:强烈建议使用RHEL 5.6/CentOS 5.6及以上版本的系统,否则可能...

  •   这里的环境是centos7版本,openstack K版     1.在各个计算节点设置权限 chmod 755 /var/lib/nova/instances   2.修改各个节点的nova.conf(/etc/nova/nova.conf) vncserver_proxyclient_address=虚拟机IP # v...

  •   同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API。  在微信小程序中,我们往往需要获取用户的身份信息,比如昵称、头像、性别、地区等。要得到这些信息,就需要我们调用获取用户信息的api了。在小程序中,微信非常重视对用户隐私的保护,因此有很多关于获取用户信息的...

  • UTRAN接口的通用协议模型如下图: 通俗地讲,通讯网络由终端(terminal)、连接(links)、网络节点(nodes)组成, links将nodes 关联起来。源终端(MO)发送的消息是怎样才能到目的终端(MT)呢? 消息经过links 和nodes,直至到达MT,其中关键是nodes怎么路由(route)消息到最终...

  •        Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号:        1、root--超级用户帐号,使用这个帐号可以在系统中做任何事情。      ...

  • 1.用户基本概述 1.1.什么是用户? 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房⼦,能够正常入驻) F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux⽀持多个用户 同时登陆。 F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows...

  • 背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证,设备上需要开启Telnet服务,将用户界面(以VTY用户界面为例)的验证方式设...