说明

我们在工作中,往往为了省事,多个人用一个linux账户,这样当我们在系统出问题时,无法知道是谁进行了不好的操作,比如误删除或错误的执行了命令,我们可以通过这个方法来查询定位这个“坏家伙”。

让我们的history展示执行时间及操作人ip(此ip为当前登录ip)

编辑/etc/bashrc/etc/profile~/.bashrc~/.bash_profile (主要看下你的~目录下有哪个就编辑哪个,前面两个是全局,后两个针对当前用户)

vi /etc/profile

在文末加上以下内容

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`    # 取得登录客户端的IP
if [ -z $USER_IP ]
then
          USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "

使配置生效(这里具体看你修改文件)

source /etc/profile

测试
在这里插入图片描述

我们还可以查询账户登录的ip和登录的时间段

last

记录日志

感谢庭外看茶的反馈,经验证who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'获取的是当前登录人的ip,并没有做历史记录,博主查阅了网上相关的资料,重新整理为日志记录的形式。
编辑

vi /etc/profile

文末加入

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`    # 取得登录客户端的IP
HISTDIR=/var/log/history
if [ -z $USER_IP ]
then
        USER_IP=`hostname`
fi

export HISTSIZE=4096

DT=`date +%Y%m%d_%H%M%S`

export HISTFILE="$HISTDIR/${LOGNAME}_${USER_IP}.$DT"
export HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "

chmod 666 $HISTDIR/* 2>/dev/null

使配置生效(这里具体看你修改文件)

source /etc/profile

注意:此方法是将日志默认保存~/.bash_history改到指定的日志路径,通过重命名为用户名加ip和时间的形式来记录操作人ip的,日志在登录时保存在内存中,只有退出时和手动执行history -w (覆盖)history -a (追加)才会被记录。

通过修改DT=`date +%Y%m%d` 可以实现按天记录,当然我们也可以改成按月、按年记录,由于是修改日志保存位置,当时间与我们的日志文件名不一致时,会导致用户查询不到历史记录,例如我们按照上面DT为date +%Y%m%d_%H%M%S,当用户退出再登录时,我们无法再次匹配到日志文件,这样登录人每次都要自己手输历史命令不方便,我们可以按月或按日记录,或者我们干脆去掉DT,export HISTFILE="$HISTDIR/${LOGNAME}_${USER_IP}",这样每个用户和ip的组合命令都单独记录,但是在时间纬度上就不好确定,具体使用需要你自己取舍,我的建议是如果操作用户ip少的情况就用不带DT的方式,如果用户多,可以确定大概命令出错的时间段,建议加DT设置为时分或者小时的形式。

其他说明

日志文件中的#后面的数字是命令执行的时间戳,我们可以自行转换,确定执行时间。
在这里插入图片描述

linux自带的时间戳转化命令

 date -d @1657506746 +"%Y-%m-%d %H:%M:%S"

在这里插入图片描述

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐