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

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

相关推荐
林_学1 分钟前
Docker Desktop 全卸了,新项目上线从3天缩短到3分钟
运维·docker·容器
陈平安Java and C2 分钟前
Docker镜像原理
运维·docker·容器
爱吃山竹的大肚肚2 分钟前
Nginx 最核心和常用的命令
java·运维·服务器·前端·nginx
程序员在线炒粉8元1份顺丰包邮送可乐4 分钟前
Docker 部署PaddleOCR 实战教程(含离线模型、接口调用、排障)
运维·docker·ai·容器
天上飞的粉红小猪5 分钟前
Socket UDP编程
linux·网络协议·udp
尼古拉斯·纯情暖男·天真·阿玮6 分钟前
实验四 恶意软件实验
网络·安全·智能路由器
aosky19 分钟前
Vercel Labs agent-browser 深度测评:AI时代的浏览器自动化利器
运维·人工智能·自动化·agent-browser
皓月盈江24 分钟前
Linux Debian13安装后更换为国内镜像源,解决执行sudo命令提示用户名不在sudoers文件中问题
linux·服务器·sudo·debian13·debian13更换国内镜像源·用户名不在sudoers文件中
wdfk_prog25 分钟前
[Linux]学习笔记系列 -- [driver][base]class
linux·笔记·学习
龙仔72527 分钟前
ZLMediaKit 日志按日期切割与自动清理方案
运维·服务器·日志切割·自动删除