在 Linux 运维中,history 命令是排查问题与审计操作的好帮手。但默认的 history 往往信息过少——没有时间、没有来源 IP,还要等用户退出终端才记录。
(图片来源网络,侵删)
今天教你一招,通过配置 /etc/profile,让历史命令记录更加完整和实时,包含:
✅ 时间戳✅ 登录用户✅ 主机名✅ SSH 客户端 IP(不带端口)✅ 历史记录容量设置✅ 实时写入 .bash_history 文件
一键配置命令请以 root 用户或具有 sudo 权限执行以下命令:
sudo tee -a /etc/profile > /dev/null << 'EOF'export HISTSIZE=10000export HISTFILESIZE=10000export HISTTIMEFORMAT="%F %T [$USER@$(hostname):$(echo $SSH_CLIENT | cut -d' ' -f1)] "export PROMPT_COMMAND="history -a"EOF 立即生效执行以下命令,让配置立即生效:
source /etc/profile 参数详解export HISTSIZE=10000内存中最多保留 10,000 条历史命令(当前 shell 会话中的历史)。export HISTFILESIZE=10000.bash_history 文件中最多保留 10,000 条历史命令(退出 shell 后写入的历史记录)。export HISTTIMEFORMAT="%F %T [$USER@$(hostname):$(echo $SSH_CLIENT | cut -d' ' -f1)] "格式化每条历史命令的时间戳,并显示用户、主机名、SSH IP(不带端口)。export PROMPT_COMMAND="history -a"每输入一条命令就实时写入到 .bash_history 文件,不再等到退出终端。 效果预览执行几条命令后,查看历史记录:
history你会看到如下格式:
1001 2025-08-07 14:30:21 [root@server:192.168.1.10] yum update 1002 2025-08-07 14:30:44 [root@server:192.168.1.10] systemctl restart nginx是不是清晰很多?
建议扩展如需让所有用户(包括未来新建的用户)也自动拥有这些设置,可以将相同配置加入:
/etc/bash.bashrc/etc/skel/.bashrc 总结通过这一步配置,Linux 的命令审计能力可以大大增强,不仅适合运维日常,也适合企业合规需求。
京公网安备11000000000001号
京ICP备11000001号
还没有评论,来说两句吧...