在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回收站操作的日志记录,满足“追踪删除行为”的需求。