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和用户名信息。

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

相关推荐
CS_浮鱼13 分钟前
【Linux】进程概念
linux·运维·服务器
ITVV29 分钟前
hadoop-3.4.1 单机伪部署
大数据·linux·hadoop
Elias不吃糖1 小时前
epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
linux·c++·event
P***25391 小时前
免费的Web安全漏洞扫描,工具
安全·web安全
人工智能训练1 小时前
Ubuntu中如何进入root用户
linux·运维·服务器·人工智能·ubuntu·ai编程·root
tianshiyeben1 小时前
WGCLOUD监控系统使用指南 - 告警消息整理完整版
linux·运维·服务器·系统安全·zabbix
Unlyrical2 小时前
splice, io_uring_prep_splice 调用(无效参数)
linux·服务器·c++·unix
喜欢你,还有大家2 小时前
Docker-存储
运维·docker·容器
暂时先用这个名字2 小时前
信创时代下,PHP/MySQL应用的平滑迁移与运维管理升级(AI整理)
运维·mysql·php·信创·国产化·国产·迁移
---学无止境---2 小时前
Linux内核用户身份管理全链路深度剖析:setuid系统调用完整架构
linux