10.保存history记录

1.把所有輸入過的命令記錄到/var/log/message

export HISTFILESIZE=1000000
export HISTSIZE=4096
export HISTTIMEFORMAT="%F %T `whoami` "
export PROMPT_COMMAND="history -a"
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y ; echo $y ;});logger "[euid=$(whoami)]":$(who am i):[`pwd`]" $msg";}'

說明:
%Y:4位数的年份;%m:2位数的月份数;%d:2位数的一个月中的日期数;%H:2位数的小时数(24小时制);%M:2位数的分钟数;%S:2位数的秒数
%F:相當于%Y-%m-%d
%T:same as %H:%M:%S

 

 

2.把所有用戶記的操作記錄到相對應的文件

export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/var/log/.hist
if [ -z $USER_IP ];then
USER_IP=$HOSTNAME
fi
if [ ! -d $HISTDIR ];then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ];then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"
chmod 600 $HISTDIR/${LOGNAME}/*.hist* 2>/dev/null

 另一种方法

[root@localhost ~]# mkdir /usr/local/records # 创建日志文件存放的目录
[root@localhost ~]# chmod 777 !$
chmod 777 /usr/local/records
[root@localhost ~]# chmod +t !$
chmod +t /usr/local/records
[root@localhost ~]# vim /etc/profile # 文件末尾增加以下内容
if [ ! -d /usr/local/records/${LOGNAME} ]
then
mkdir -p /usr/local/records/${LOGNAME}
chmod 300 /usr/local/records/${LOGNAME}
fi
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
[root@localhost ~]# source /etc/profile # 让profile的配置生效

 

3.
LINUX用户登录后精确命令记录(history 按时间、用户显示命令记录)
# 设置保存历史命令的文件大小,在.bash_history中最多保存的命令條數
export HISTFILESIZE=10000000
# 保存历史命令条数,用history最多顯示的命令條數
export HISTSIZE=1000000
# 实时记录历史命令,默认只有在用户退出之后才会统一记录,很容易造成多个用户间的相互覆盖。
export PROMPT_COMMAND="history -a"
# 记录每条历史命令的执行时间
export HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S "

 

posted @ 2020-11-09 10:39  天涯160  阅读(685)  评论(0)    收藏  举报