Linux系统中配置history命令显示时间、IP、账号和操作命令

要让Linux的history命令显示时间、IP地址、用户名和操作命令,需要对系统进行配置。以下是完整的配置步骤:

配置步骤

  • 全局配置文件(推荐,对所有用户生效):
bash 复制代码
sudo vim /etc/profile
  • 在文件末尾添加以下配置:
bash 复制代码
# 增加历史记录数量(默认1000条,这里设置为10000条)
HISTFILESIZE=10000
HISTSIZE=10000

# 获取用户登录IP
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ -z "$USER_IP" ]; then
    USER_IP=`hostname`
fi

# 设置历史记录格式:时间、IP、用户名、命令
HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "
export HISTTIMEFORMAT

# 优化历史记录行为
export HISTCONTROL=ignoredups:erasedups  # 避免重复命令
shopt -s histappend  # 历史记录追加而非覆盖
export PROMPT_COMMAND="history -a; history -c; history -r"  # 每次命令执行后保存
  • 使配置立即生效:
bash 复制代码
source /etc/profile

配置说明

  • HISTFILESIZEHISTSIZE:设置历史命令保存的最大数量
  • USER_IP:获取用户登录IP地址,如果获取不到则使用主机名代替
  • HISTTIMEFORMAT:定义历史记录的显示格式,包含时间、IP和用户名
  • HISTCONTROL:避免重复命令记录
  • PROMPT_COMMAND:确保每次命令执行后都保存到历史文件

配置效果

执行history命令后,输出将类似这样:

XML 复制代码
1 2025-10-24 15:37:04 192.168.1.100:root ls -l
2 2025-10-24 15:38:12 192.168.1.100:root cd /var/log
3 2025-10-24 15:39:05 192.168.1.100:root tail -f syslog

额外说明

  • 针对单个用户配置 :如果只想对特定用户生效,可以将上述配置添加到~/.rc或~/._profile文件中。
  • 安全考虑 :虽然上述配置能记录IP和用户信息,但攻击者仍可能通过unset HISTTIMEFORMAT或history -c清除历史记录。如需更高级的安全审计,可将history记录发送到syslog服务器。
  • 验证配置 :配置后执行history命令,确认输出中包含时间、IP和用户名信息。

通过以上配置,您可以在查看历史命令时获得更详细的审计信息,便于系统管理和安全排查。

相关推荐
用户962377954483 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机6 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机6 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954488 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star8 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544811 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒1 天前
OpenClaw 多 Agent 配置实战指南
运维