linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

history配置

  • 简介
  • 配置文件说明
    • 环境变量文件
  • 配置方法
    • 方法一:配置全局变量
    • 方法二:使用脚本配置
  • 最佳实践

简介

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`: "
EOF

2. 设置历史记录大小

# 设置内存中的历史命令数量
cat >> /etc/bashrc <<EOF
export HISTSIZE=10000

# 设置历史文件大小
export HISTFILESIZE=10000
EOF

3. 配置历史文件

# 编辑用户配置
cat >> /root/.bashrc <<EOF

# 指定历史文件位置
export HISTFILE=/root/.bash_history

# 启用追加模式
shopt -s histappend
EOF

4. 历史记录控制

  • HISTCONTROL
    • ignoredups:忽略连续重复命令
    • ignorespace:忽略空格开头的命令
    • ignoreboth:同时启用上述两种
    • erasedups:忽略所有重复命令
cat >> /etc/profile <<EOF
# 设置历史记录控制
export HISTCONTROL=ignoredups   # 忽略连续重复命令
EOF

5. 实时记录

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

最佳实践

  1. 配置建议

    • 根据实际需求选择配置方式
    • 合理设置历史记录大小
    • 定期清理历史文件
  2. 安全建议

    • 限制历史文件访问权限
    • 记录关键命令执行信息
    • 定期备份历史记录

注意:

  • 修改配置后需要 source 生效
  • 注意历史文件的权限设置
  • 合理规划存储空间

参考资料:

  • Bash History 文档
  • Linux 系统审计
最近更新时间:
Prev
多类型资源统计工具: dstat
Next
unzip命令