最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
CentOS系统如何防止文件误删
时间:2026-06-05 09:52:30 编辑:袖梨 来源:一聚教程网
CentOS 防止误删文件的实用方案

一 事前预防
- 使用回收站替代 rm:安装并使用 trash-cli,删除文件会进入回收站,支持列出与恢复。示例:安装命令为 sudo yum install trash-cli -y;删除用 trash /path/file;查看回收站 ls ~/.local/share/Trash/files;恢复用 restore-trash(或按文件名从回收站目录恢复)。
- 为 rm 增加确认:给 rm 设置别名 alias rm=‘rm -i’,删除前逐项确认;也可在脚本或运维场景显式使用 rm -i 提升安全性。
- 最小权限与访问控制:对关键目录设置只读或受限权限,例如 chmod 755 /path 或 chmod 444 /path/file;必要时用 chown 调整属主属组,仅授权必要用户删除。
- 强化系统安全策略:启用 SELinux 或 AppArmor,通过策略限制进程对重要目录的删除与改写,降低误删与被利用风险。
- 建立可靠备份:定期用 rsync 或 tar 将关键数据备份到独立磁盘/远端,例如 rsync -a --progress /data /backup 或 tar -czvf backup.tar.gz /data;发生误删可从备份快速回滚。
二 事中监控与告警
- 实时监控删除事件:用 inotifywait(inotify-tools)对关键目录设防,删除时即时告警或阻断。示例:inotifywait -m /data -e delete | while read p a f; do echo “Deleted: $f in $p”; done。
- 追踪被删除但仍被占用的文件:用 lsof | grep deleted 查看已被删除但仍被进程打开的文件句柄,及时定位异常删除或“删了还在用”的风险点。
- 审计关键删除行为:启用 auditd 记录 unlink/rename 等系统调用,便于事后溯源。示例规则:echo ‘-a exit,always -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -k delete’ | sudo tee -a /etc/audit/rules.d/audit.rulesecho ‘-a exit,always -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k delete’ | sudo tee -a /etc/audit/rules.d/audit.rules然后 sudo systemctl start auditd && sudo systemctl enable auditd。
三 事后应急与恢复
- 立刻“只读化”现场:发现误删后,优先对涉及分区执行只读挂载或卸载,避免新写入覆盖已删除数据(例如 umount /dev/sdXY)。
- 借助进程句柄抢救:若文件被进程占用,可用 lsof | grep deleted 找到进程与文件描述符,从 /proc/
/fd/ 复制回原路径。 - 使用文件系统恢复工具:对 ext3/ext4 可尝试 extundelete,如恢复单文件:extundelete /dev/sdXY --restore-file /path/file;恢复全部:extundelete /dev/sdXY --restore-all。对分区/更复杂场景可用 TestDisk/PhotoRec 等工具。
- 从备份恢复:若有 rsync/tar 等定期备份,直接按备份策略回滚到误删前的时间点。
四 进阶 自定义回收站脚本
- 思路:为 bash 设置别名,把 rm 改为将文件移动到指定“回收站”目录,并自动加时间戳避免覆盖;提供查看、清空与还原函数。
- 示例(放入 ~/.bashrc 后执行 source ~/.bashrc):mkdir -p /data/.trashalias rm=ydyalias lt=‘ls /data/.trash/’alias qk=qingkongalias hy=huanyuanydy() {local ts=$(date +%Y%m%d%H%M%S)for f in “$@”; do[ -e “$f” ] || continuemv -i “$f” "/data/.trash/${f##/}-${ts}"done}huanyuan() {mv -i “/data/.trash/$@” ./}qingkong() {read -p "清空全部回收站? [y/N] " c; [[ $c =~ ^[yY]$ ]] && /bin/rm -rf /data/.trash/}
- 提示:该方式仅对当前 shell 生效;脚本需处理特殊字符、目录结尾斜杠、跨文件系统等情况;切勿对系统关键目录做别名覆盖,生产环境建议优先使用 trash-cli。
相关文章
- linux echo检测漏洞方法 06-06
- grep正则表达式怎样检测漏洞 06-06
- Linux Hack漏洞如何修复 06-06
- Linux Hack攻击手段都包含哪些 06-06
- Linux系统Hack漏洞利用方式有哪些 06-06
- Linux Hack攻击怎样有效预防 06-06