我们知道可以使用history命令,查看自己的操作记录,但如果你是root用户,如何查看其它用户的操作记录呢?

其实history命令只是把当前用户目录下的~/.bash_History文件内容列出来而已。

在配置文件中(/etc/bashrc 或者 /etc/profile 或者~/.bash_profile 或者 ~/.bashrc)中添加配置,

但是建议尽量在bashrc下添加,因为给/etc/profile添加文件可能导致命令行失效

第一种:配置/etc/bashrc

一般而言,history展示的操作记录是没有时间的,可以在/etc/bashrc文件中加入下列代码:

HISTFILESIZE=2000  # #设置保存历史命令的文件大小
HISTSIZE=2000 ##保存历史命令条数
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S:" ###记录每条历史命令的执行时间
export HISTTIMEFORMAT
注意:
其中:
%Y:4位数的年份;
%m:2位数的月份数;
%d:2位数的一个月中的日期数;
%H:2位数的小时数(24小时制);
%M:2位数的分钟数;
%S:2位数的秒数

效果展示如下:

记录用户操作历史命令history_bash

第二种:配置脚本,放入/etc/bashrc


在root用户下操作,

vim /etc/bashrc

#history
USER_IP=`who -u am i >/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history/root/
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod $HISTDIR/${LOGNAME}
fi
export HISTSIZE=1000 #这儿设置历史命令条数
DT=`date +%Y-%m-%d_%H:%M:%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
HISTTIMEFORMAT="`whoami`: | %F | %T: |${USER_IP}:"
chmod $HISTDIR/${LOGNAME}/*.history* 2>/dev/nul

重新加载

source /etc/bashrc

脚本的作用是记录用户登陆后的操作,如果这个用户是root用户,会在/usr/share/.history/下创建用户名的文件夹,里面存放用户相关的历史命令记录。

效果展示:

记录用户操作历史命令history_bash_02


第三种:配置/etc/profile

#history
USER_IP=`who -u am i >/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTTIMEFORMAT="`whoami`: | %F | %T: |${USER_IP}:"

效果展示:

记录用户操作历史命令history_sed_03