在CentOS系统中,回收站的日志记录主要依赖自定义脚本(记录删除操作的详细信息)和审计工具(监控文件系统事件),以下是具体实现方式:
通过修改rm
命令的别名,将删除的文件移动到回收站并记录操作日志(包括时间、原路径、目标路径)。
delete
脚本文件,内容如下(关键逻辑:移动文件到回收站并记录日志):#!/bin/bash # 记录删除信息的日志函数 log_trash() { file=$1 timestamp=$2 echo "$timestamp\t$file\t$HOME/.local/share/Trash/files/$(basename "$file")" >> ~/.local/share/Trash/.log } # 移动文件到回收站的函数 move_to_trash() { # 创建回收站目录(若不存在) mkdir -p ~/.local/share/Trash/files mkdir -p ~/.local/share/Trash/.log # 遍历所有参数文件 for file in "$@"; do if [ -e "$file" ]; then # 获取当前时间戳 timestamp=$(date +"%Y-%m-%d %H:%M:%S") # 移动文件到回收站 mv "$file" ~/.local/share/Trash/files/ # 记录日志(时间、原路径、回收站路径) log_trash "$file" "$timestamp" fi done } # 执行移动操作 move_to_trash "$@"
/etc/bashrc
(全局生效)或~/.bashrc
(当前用户生效),将rm
命令替换为自定义脚本:chmod +x /path/to/delete # 替换为脚本实际路径 echo 'alias rm="/path/to/delete"' >> ~/.bashrc source ~/.bashrc # 重新加载环境变量
~/.local/share/Trash/.log
,可使用以下命令查看:cat ~/.local/share/Trash/.log
日志格式示例:2025-10-02 10:00:00 /home/user/test.txt /home/user/.local/share/Trash/files/test.txt
auditd
是Linux系统自带的审计工具,可监控回收站目录的创建、删除、修改等事件,并将日志记录到系统审计日志中。
sudo yum install audit -y sudo systemctl start auditd sudo systemctl enable auditd
/etc/audit/audit.rules
文件,添加以下规则(监控用户回收站目录,替换your_username
为实际用户名):-w /home/your_username/.local/share/Trash/files -p wa -k trash_monitor
参数说明: -w
:指定监控目录;-p wa
:监控写入(w)和属性修改(a)事件;-k trash_monitor
:自定义日志标签(便于后续查询)。ausearch
命令查询回收站相关事件:sudo ausearch -k trash_monitor
日志示例:type=SYSCALL msg=audit(1725230400.123:456): arch=x86_64 syscall=unlinkat success=yes exit=0 a0=3 a1=7ffd12345678 a2=0 a3=0 items=1 ppid=1234 pid=5678 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 comm="rm" exe="/usr/bin/rm" key="trash_monitor"
/root/.local/share/Trash
),需调整规则中的路径;logrotate
工具(如搜索结果中提到的/etc/logrotate.d/rsyslog
配置)管理日志文件大小和保留时间,避免日志占用过多磁盘空间。以上方法可实现CentOS回收站操作的日志记录,满足“追踪删除行为”的需求。