history配置
2025-02-17
简介
history 命令用于记录用户执行过的命令。在生产环境中,记录命令执行的详细信息(如时间、用户等)对于系统审计和问题排查非常重要。
配置文件说明
环境变量文件
用户级配置:
~/.bashrc~/.bash_profile
系统级配置:
/etc/profile/etc/bashrc/etc/profile.d/*.sh
配置方法
方法一:配置全局变量
1. 记录命令执行时间
# 编辑全局配置
cat >> /etc/bashrc <<EOF
# 设置时间格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] `whoami`: "
EOF2. 设置历史记录大小
# 设置内存中的历史命令数量
cat >> /etc/bashrc <<EOF
export HISTSIZE=10000
# 设置历史文件大小
export HISTFILESIZE=10000
EOF3. 配置历史文件
# 编辑用户配置
cat >> /root/.bashrc <<EOF
# 指定历史文件位置
export HISTFILE=/root/.bash_history
# 启用追加模式
shopt -s histappend
EOF4. 历史记录控制
- HISTCONTROL
- ignoredups:忽略连续重复命令
- ignorespace:忽略空格开头的命令
- ignoreboth:同时启用上述两种
- erasedups:忽略所有重复命令
cat >> /etc/profile <<EOF
# 设置历史记录控制
export HISTCONTROL=ignoredups # 忽略连续重复命令
EOF5. 实时记录
cat >> /etc/bashrc <<EOF
# 启用实时记录
export PROMPT_COMMAND='history -a'
EOF方法二:使用脚本配置
创建配置脚本 /etc/profile.d/history_config.sh:
#!/bin/bash
# 设置历史记录目录
HISTDIR=/usr/share/.history
# 获取用户 IP
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
[ -z "$USER_IP" ] && USER_IP=`hostname`
# 创建历史记录目录
[ ! -d "$HISTDIR" ] && mkdir -p "$HISTDIR" && chmod 777 "$HISTDIR"
[ ! -d "$HISTDIR/${LOGNAME}" ] && mkdir -p "$HISTDIR/${LOGNAME}" && chmod 300 "$HISTDIR/${LOGNAME}"
# 配置历史记录
export HISTSIZE=4000
DT=`date +%Y-%m-%d_%H:%M:%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%F %T] ${USER_IP}: "
# 设置权限
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null最佳实践
配置建议
- 根据实际需求选择配置方式
- 合理设置历史记录大小
- 定期清理历史文件
安全建议
- 限制历史文件访问权限
- 记录关键命令执行信息
- 定期备份历史记录
注意:
- 修改配置后需要 source 生效
- 注意历史文件的权限设置
- 合理规划存储空间
参考资料: