0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Centos7分用户记录历史命令至日志文件教程

jf_98250943 来源:jf_98250943 2025-06-28 14:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在企业级Linux运维中,实时记录用户操作历史是审计排查的关键步骤。本文华纳云针对CentOS7系统,提供三种高效方案实现分用户日志记录+防篡改管理。所有步骤均经过实际验证,代码段内含执行逻辑剖析。

一、核心原理剖析

1. 原生历史记录缺陷 (~/.bash_history)

默认延迟写入:会话退出后才保存命令

易被清空:用户可通过history -c或删除文件清除记录

混合存储:不同用户命令混合在同一文件

2. 改进方案设计要点

实时写入:通过PROMPT_COMMAND变量实现逐条记录

独立日志:按用户名生成隔离文件

权限控制:仅允许追加写入(chattr +a)

完整元数据:记录时间/IP/用户等上下文信息

二、实战配置流程 (推荐方案)

步骤1:创建受保护日志目录

sudo mkdir -p /var/log/command_audit  #创建统一存放目录
sudo chmod 755 /var/log/command_audit  #设置为全局可读但不可写
sudo chown root:root /var/log/command_audit  #权限归属root
sudo chattr +a /var/log/command_audit  #启用仅追加模式防止删除

代码说明:

chattr +a锁定文件属性,用户无法删除或修改现有内容

/var/log为系统日志规范存放位置,便于统一管理

步骤2:全局配置脚本部署

新建配置文件:

sudo vim /etc/profile.d/command_logger.sh

内容模板?:

# 定义日志格式
export HISTTIMEFORMAT="%F %T `whoami` "  #时间戳+用户标识
# 实时写入逻辑
export PROMPT_COMMAND='
 CURRENT_CMD=$(history 1 | sed "s/^[ ]*//g");  #提取最新命令
 echo "${CURRENT_CMD}" | tee -a 
 "/var/log/command_audit/`whoami`-$(date +%Y%m%d).log"
 >/dev/null 2>&1'  #按天分文件记录

代码说明:

PROMPT_COMMAND:每次新命令行提示符出现前触发执行

tee -a:同时输出到屏幕和日志(防丢失)

whoami与date:动态生成带用户+日期的唯一文件名

步骤3:权限加固与审计优化

设置日志防篡改:

sudo touch /var/log/command_audit/*.log  #初始化空文件
sudo chmod 640 /var/log/command_audit/*.log  #仅root可写,用户只读
sudo chattr +a /var/log/command_audit/*.log  #强制追加模式

三、附加安全防护技巧

1. 增强版元数据记录

修改PROMPT_COMMAND添加更多审计信息:

export PROMPT_COMMAND='
 REMOTE_IP=$(echo ${SSH_CONNECTION} | awk "{print $1}");  #获取客户端IP
 LOG_TIME=$(date "+%Y-%m-%d %H:%M:%S");  #精确到秒的时间
 CMD_CONTENT=$(history 1 | sed "s/^[ ]*//g");  #提取命令
 echo "${LOG_TIME} | ${REMOTE_IP} | ${USER} | ${CMD_CONTENT}" 
 >> /var/log/command_audit/${USER}.audit.log'

2. 定期日志转储策略

新增logrotate配置文件:

sudo vim /etc/logrotate.d/command_audit 

内容模板:

/var/log/command_audit/*.log {
    daily        #每日切割
    rotate 90    #保留90天
    compress     #启用压缩
    missingok    #允许文件不存在
    notifempty   #空文件不处理
}

四、效果验证与问题排查

1. 实时验证

新开终端执行:

tail -f /var/log/command_audit/testuser.log  #实时追踪日志

2. 关键故障点分析

权限不足:检查chattr +a和目录所有权

SELinux拦截:查看/var/log/audit/audit.log过滤关键字

时区错误:使用timedatectl确认系统时间配置

多会话覆盖:确认shopt -s histappend已启用历史追加模式

五、扩展应用场景

容器环境适配:Docker镜像构建时预置配置

自动化巡检:通过ELK搭建集中式日志分析平台

高危命令告警:结合grep实时监控rm -rf等危险操作

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90886
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23447
  • 日志
    +关注

    关注

    0

    文章

    145

    浏览量

    11026
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电能质量在线监测装置数据日志能加密存储吗?

    加密的技术实现方式 1. 加密算法与分级策略 日志类型 推荐加密算法 密钥管理方式 适用场景 敏感日志(事件记录、故障数据、用户信息) AES-256 (高级加密标准) 硬件安全模块(
    的头像 发表于 12-05 10:16 280次阅读
    电能质量在线监测装置数据<b class='flag-5'>日志</b>能加密存储吗?

    Shell历史命令history用法

    HISTSIZE 变量来控制历史命令保存的条目数。 「示例代码」:export HISTSIZE=1000# 设置历史命令保存的条目数为1000
    发表于 12-02 06:10

    使用ulog 写入日志文件系统,无法使用cat命令读取文件内容怎么解决?

    文件后,使用cat命令获得的文件句柄好像不正常卡在了 RT_ASSERT(file->data != RT_NULL); 请问这个日志文件
    发表于 10-13 06:12

    使用littlefs存储ulog日志,然后读日志文件会出错,为什么?

    使用littlefs存储ulog日志,然后通过命令读取日志文件,或者通过API接口读取或拷贝日志文件
    发表于 09-29 06:14

    ulog无法输出日志保存到文件,为什么?

    想把日志输出到文件,显示初始化成功了,可是没有输出到文件
    发表于 09-23 07:47

    CentOS 7下MySQL 8双主热备高可用架构全解

    Centos7部署MySQL8+keepalived双主热备(含Keepalived配置与GTID同步优化方案) 架构拓扑原理 GTID同步 VIP 192.168.1.100 MySQL主节点1
    的头像 发表于 08-12 17:08 608次阅读

    电商API日志分析的实用工具

      在当今数字化电商时代,API(应用程序编程接口)已成为平台与外部系统交互的核心通道。电商API日志记录了每一次请求的详细信息,包括用户行为、交易状态、错误响应等。分析这些日志能帮助
    的头像 发表于 07-23 15:50 412次阅读
    电商API<b class='flag-5'>日志</b>分析的实用工具

    如何在CentOS系统中部署ELK日志分析系统

    功能,使用户能够快速获取关键业务洞察。本文将详细介绍如何在 CentOS 系统中部署 ELK 日志分析系统,
    的头像 发表于 05-08 11:47 795次阅读
    如何在<b class='flag-5'>CentOS</b>系统中部署ELK<b class='flag-5'>日志</b>分析系统

    基于RV1126开发板限制系统日志大小教程

    无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部。服务器问题的解决都是从查看系统(错误)日志开始的。系统日志
    的头像 发表于 04-16 11:18 591次阅读
    基于RV1126开发板限制系统<b class='flag-5'>日志</b>大小教程

    FRED的光路和光路历史记录

    用户之后使用诊断工具,如光路追迹路径报告、杂散光报告、图像伪影诊断工具,以及在分析表面中使用射线选择过滤器。 创建/用户线光历史记录文件 此选项保存每条光线的每个交点的坐标数据,可以
    发表于 03-07 08:55

    Linux文件管理命令详解

    cat命令描述:该命令用于连接文件并打印到标准输出设备上。
    的头像 发表于 02-17 10:34 890次阅读
    Linux<b class='flag-5'>文件</b>管理<b class='flag-5'>命令</b>详解

    如果系统日志显示驱动问题,我该怎么办?

    如果系统日志显示驱动问题,您可以按照以下步骤进行排查和解决: 1.检查内核日志 使用 dmesg 命令查看内核日志,过滤出与驱动相关的错误信息:   sudo dmesg | grep
    的头像 发表于 01-20 17:38 1193次阅读

    Linux实时查看日志的四种命令详解

    如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户文件更改或不断更新时输出文件的内容。在Linux中实时显示
    的头像 发表于 01-13 10:45 3981次阅读
    Linux实时查看<b class='flag-5'>日志</b>的四种<b class='flag-5'>命令</b>详解

    升级centos7内核版本

    " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)1 : CentOS Linu
    的头像 发表于 01-02 10:41 1004次阅读

    玩转Nginx日志管理:高效排查问题的终极指南

    Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问
    的头像 发表于 12-30 13:50 1112次阅读